Fix NPE when listener is attached while view is destroyed (#560)
This commit is contained in:
parent
d11dbe6853
commit
36675bba47
|
@ -77,7 +77,8 @@ public class NowPlayingFragment extends Fragment
|
||||||
implements HostConnectionObserver.PlayerEventsObserver,
|
implements HostConnectionObserver.PlayerEventsObserver,
|
||||||
HostConnectionObserver.ApplicationEventsObserver,
|
HostConnectionObserver.ApplicationEventsObserver,
|
||||||
GenericSelectDialog.GenericSelectDialogListener,
|
GenericSelectDialog.GenericSelectDialogListener,
|
||||||
MediaProgressIndicator.OnProgressChangeListener {
|
MediaProgressIndicator.OnProgressChangeListener,
|
||||||
|
ViewTreeObserver.OnScrollChangedListener {
|
||||||
private static final String TAG = LogUtils.makeLogTag(NowPlayingFragment.class);
|
private static final String TAG = LogUtils.makeLogTag(NowPlayingFragment.class);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -131,6 +132,8 @@ public class NowPlayingFragment extends Fragment
|
||||||
|
|
||||||
private Unbinder unbinder;
|
private Unbinder unbinder;
|
||||||
|
|
||||||
|
private int pixelsToTransparent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Injectable views
|
* Injectable views
|
||||||
*/
|
*/
|
||||||
|
@ -198,19 +201,6 @@ public class NowPlayingFragment extends Fragment
|
||||||
|
|
||||||
mediaProgressIndicator.setOnProgressChangeListener(this);
|
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() {
|
volumeLevelIndicator.setOnVolumeChangeListener(new VolumeLevelIndicator.OnVolumeChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onVolumeChanged(int volume) {
|
public void onVolumeChanged(int volume) {
|
||||||
|
@ -230,6 +220,13 @@ public class NowPlayingFragment extends Fragment
|
||||||
public void onActivityCreated (Bundle savedInstanceState) {
|
public void onActivityCreated (Bundle savedInstanceState) {
|
||||||
super.onActivityCreated(savedInstanceState);
|
super.onActivityCreated(savedInstanceState);
|
||||||
setHasOptionsMenu(false);
|
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
|
@Override
|
||||||
|
@ -249,6 +246,7 @@ public class NowPlayingFragment extends Fragment
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDestroyView() {
|
public void onDestroyView() {
|
||||||
|
mediaPanel.getViewTreeObserver().removeOnScrollChangedListener(this);
|
||||||
super.onDestroyView();
|
super.onDestroyView();
|
||||||
unbinder.unbind();
|
unbinder.unbind();
|
||||||
}
|
}
|
||||||
|
@ -272,6 +270,13 @@ public class NowPlayingFragment extends Fragment
|
||||||
public void onError(int errorCode, String description) { }
|
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
|
* Callbacks for bottom button bar
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue