Fix NPE when listener is attached while view is destroyed (#560)

This commit is contained in:
Martijn Brekhof 2018-07-03 20:48:52 +02:00 committed by Synced Synapse
parent d11dbe6853
commit 36675bba47
1 changed files with 19 additions and 14 deletions

View File

@ -77,7 +77,8 @@ public class NowPlayingFragment extends Fragment
implements HostConnectionObserver.PlayerEventsObserver,
HostConnectionObserver.ApplicationEventsObserver,
GenericSelectDialog.GenericSelectDialogListener,
MediaProgressIndicator.OnProgressChangeListener {
MediaProgressIndicator.OnProgressChangeListener,
ViewTreeObserver.OnScrollChangedListener {
private static final String TAG = LogUtils.makeLogTag(NowPlayingFragment.class);
/**
@ -131,6 +132,8 @@ public class NowPlayingFragment extends Fragment
private Unbinder unbinder;
private int pixelsToTransparent;
/**
* Injectable views
*/
@ -198,19 +201,6 @@ public class NowPlayingFragment extends Fragment
mediaProgressIndicator.setOnProgressChangeListener(this);
// Setup dim the fanart when scroll changes
// Full dim on 4 * iconSize dp
Resources resources = getActivity().getResources();
final int pixelsToTransparent = 4 * resources.getDimensionPixelSize(R.dimen.default_icon_size);
mediaPanel.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
float y = mediaPanel.getScrollY();
float newAlpha = Math.min(1, Math.max(0, 1 - (y / pixelsToTransparent)));
mediaArt.setAlpha(newAlpha);
}
});
volumeLevelIndicator.setOnVolumeChangeListener(new VolumeLevelIndicator.OnVolumeChangeListener() {
@Override
public void onVolumeChanged(int volume) {
@ -230,6 +220,13 @@ public class NowPlayingFragment extends Fragment
public void onActivityCreated (Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setHasOptionsMenu(false);
/** Setup dim the fanart when scroll changes
* Full dim on 4 * iconSize dp
* @see {@link #onScrollChanged()}
*/
pixelsToTransparent = 4 * getActivity().getResources().getDimensionPixelSize(R.dimen.default_icon_size);
mediaPanel.getViewTreeObserver().addOnScrollChangedListener(this);
}
@Override
@ -249,6 +246,7 @@ public class NowPlayingFragment extends Fragment
@Override
public void onDestroyView() {
mediaPanel.getViewTreeObserver().removeOnScrollChangedListener(this);
super.onDestroyView();
unbinder.unbind();
}
@ -272,6 +270,13 @@ public class NowPlayingFragment extends Fragment
public void onError(int errorCode, String description) { }
};
@Override
public void onScrollChanged() {
float y = mediaPanel.getScrollY();
float newAlpha = Math.min(1, Math.max(0, 1 - (y / pixelsToTransparent)));
mediaArt.setAlpha(newAlpha);
}
/**
* Callbacks for bottom button bar
*/