Loading packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSIconViewImpl.java +15 −4 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.systemui.qs.tileimpl; import static com.android.systemui.qs.tileimpl.QSTileImpl.getColorForState; import static com.android.systemui.qs.tileimpl.QSTileImpl.getColorForState; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ValueAnimator; import android.animation.ValueAnimator; import android.content.Context; import android.content.Context; import android.content.res.ColorStateList; import android.content.res.ColorStateList; Loading Loading @@ -127,7 +129,6 @@ public class QSIconViewImpl extends QSIconView { } } protected void setIcon(ImageView iv, QSTile.State state) { protected void setIcon(ImageView iv, QSTile.State state) { updateIcon(iv, state); if (state.disabledByPolicy) { if (state.disabledByPolicy) { iv.setColorFilter(getContext().getColor(R.color.qs_tile_disabled_color)); iv.setColorFilter(getContext().getColor(R.color.qs_tile_disabled_color)); } else { } else { Loading @@ -137,7 +138,7 @@ public class QSIconViewImpl extends QSIconView { int color = getColor(state.state); int color = getColor(state.state); mState = state.state; mState = state.state; if (iv.isShown() && mTint != 0) { if (iv.isShown() && mTint != 0) { animateGrayScale(mTint, color, iv); animateGrayScale(mTint, color, iv, () -> updateIcon(iv, state)); mTint = color; mTint = color; } else { } else { if (iv instanceof AlphaControlledSlashImageView) { if (iv instanceof AlphaControlledSlashImageView) { Loading @@ -147,7 +148,10 @@ public class QSIconViewImpl extends QSIconView { setTint(iv, color); setTint(iv, color); } } mTint = color; mTint = color; updateIcon(iv, state); } } } else { updateIcon(iv, state); } } } } Loading @@ -155,7 +159,8 @@ public class QSIconViewImpl extends QSIconView { return getColorForState(getContext(), state); return getColorForState(getContext(), state); } } public static void animateGrayScale(int fromColor, int toColor, ImageView iv) { public static void animateGrayScale(int fromColor, int toColor, ImageView iv, final Runnable endRunnable) { if (iv instanceof AlphaControlledSlashImageView) { if (iv instanceof AlphaControlledSlashImageView) { ((AlphaControlledSlashImageView)iv) ((AlphaControlledSlashImageView)iv) .setFinalImageTintList(ColorStateList.valueOf(toColor)); .setFinalImageTintList(ColorStateList.valueOf(toColor)); Loading @@ -175,10 +180,16 @@ public class QSIconViewImpl extends QSIconView { setTint(iv, Color.argb(alpha, channel, channel, channel)); setTint(iv, Color.argb(alpha, channel, channel, channel)); }); }); anim.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { endRunnable.run(); } }); anim.start(); anim.start(); } else { } else { setTint(iv, toColor); setTint(iv, toColor); endRunnable.run(); } } } } Loading packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java +19 −6 Original line number Original line Diff line number Diff line Loading @@ -41,6 +41,7 @@ import com.android.systemui.qs.AlphaControlledSignalTileView; import com.android.systemui.qs.QSDetailItems; import com.android.systemui.qs.QSDetailItems; import com.android.systemui.qs.QSDetailItems.Item; import com.android.systemui.qs.QSDetailItems.Item; import com.android.systemui.qs.QSHost; import com.android.systemui.qs.QSHost; import com.android.systemui.qs.tileimpl.QSIconViewImpl; import com.android.systemui.qs.tileimpl.QSTileImpl; import com.android.systemui.qs.tileimpl.QSTileImpl; import com.android.systemui.statusbar.policy.NetworkController; import com.android.systemui.statusbar.policy.NetworkController; import com.android.systemui.statusbar.policy.NetworkController.AccessPointController; import com.android.systemui.statusbar.policy.NetworkController.AccessPointController; Loading @@ -60,6 +61,7 @@ public class WifiTile extends QSTileImpl<SignalState> { protected final WifiSignalCallback mSignalCallback = new WifiSignalCallback(); protected final WifiSignalCallback mSignalCallback = new WifiSignalCallback(); private final ActivityStarter mActivityStarter; private final ActivityStarter mActivityStarter; private boolean mExpectDisabled; public WifiTile(QSHost host) { public WifiTile(QSHost host) { super(host); super(host); Loading Loading @@ -120,6 +122,15 @@ public class WifiTile extends QSTileImpl<SignalState> { // Immediately enter transient state when turning on wifi. // Immediately enter transient state when turning on wifi. refreshState(wifiEnabled ? null : ARG_SHOW_TRANSIENT_ENABLING); refreshState(wifiEnabled ? null : ARG_SHOW_TRANSIENT_ENABLING); mController.setWifiEnabled(!wifiEnabled); mController.setWifiEnabled(!wifiEnabled); mExpectDisabled = wifiEnabled; if (mExpectDisabled) { mHandler.postDelayed(() -> { if (mExpectDisabled) { mExpectDisabled = false; refreshState(); } }, QSIconViewImpl.QS_ANIM_LENGTH); } } } @Override @Override Loading @@ -143,11 +154,13 @@ public class WifiTile extends QSTileImpl<SignalState> { @Override @Override protected void handleUpdateState(SignalState state, Object arg) { protected void handleUpdateState(SignalState state, Object arg) { if (DEBUG) Log.d(TAG, "handleUpdateState arg=" + arg); if (DEBUG) Log.d(TAG, "handleUpdateState arg=" + arg); final CallbackInfo cb; final CallbackInfo cb = mSignalCallback.mInfo; if (arg != null && arg instanceof CallbackInfo) { if (mExpectDisabled) { cb = (CallbackInfo) arg; if (cb.enabled) { return; // Ignore updates until disabled event occurs. } else { } else { cb = mSignalCallback.mInfo; mExpectDisabled = false; } } } boolean transientEnabling = arg == ARG_SHOW_TRANSIENT_ENABLING; boolean transientEnabling = arg == ARG_SHOW_TRANSIENT_ENABLING; boolean wifiConnected = cb.enabled && (cb.wifiSignalIconId > 0) && (cb.ssid != null); boolean wifiConnected = cb.enabled && (cb.wifiSignalIconId > 0) && (cb.ssid != null); Loading Loading @@ -288,7 +301,7 @@ public class WifiTile extends QSTileImpl<SignalState> { if (isShowingDetail()) { if (isShowingDetail()) { mDetailAdapter.updateItems(); mDetailAdapter.updateItems(); } } refreshState(mInfo); refreshState(); } } } } Loading Loading
packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSIconViewImpl.java +15 −4 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.systemui.qs.tileimpl; import static com.android.systemui.qs.tileimpl.QSTileImpl.getColorForState; import static com.android.systemui.qs.tileimpl.QSTileImpl.getColorForState; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ValueAnimator; import android.animation.ValueAnimator; import android.content.Context; import android.content.Context; import android.content.res.ColorStateList; import android.content.res.ColorStateList; Loading Loading @@ -127,7 +129,6 @@ public class QSIconViewImpl extends QSIconView { } } protected void setIcon(ImageView iv, QSTile.State state) { protected void setIcon(ImageView iv, QSTile.State state) { updateIcon(iv, state); if (state.disabledByPolicy) { if (state.disabledByPolicy) { iv.setColorFilter(getContext().getColor(R.color.qs_tile_disabled_color)); iv.setColorFilter(getContext().getColor(R.color.qs_tile_disabled_color)); } else { } else { Loading @@ -137,7 +138,7 @@ public class QSIconViewImpl extends QSIconView { int color = getColor(state.state); int color = getColor(state.state); mState = state.state; mState = state.state; if (iv.isShown() && mTint != 0) { if (iv.isShown() && mTint != 0) { animateGrayScale(mTint, color, iv); animateGrayScale(mTint, color, iv, () -> updateIcon(iv, state)); mTint = color; mTint = color; } else { } else { if (iv instanceof AlphaControlledSlashImageView) { if (iv instanceof AlphaControlledSlashImageView) { Loading @@ -147,7 +148,10 @@ public class QSIconViewImpl extends QSIconView { setTint(iv, color); setTint(iv, color); } } mTint = color; mTint = color; updateIcon(iv, state); } } } else { updateIcon(iv, state); } } } } Loading @@ -155,7 +159,8 @@ public class QSIconViewImpl extends QSIconView { return getColorForState(getContext(), state); return getColorForState(getContext(), state); } } public static void animateGrayScale(int fromColor, int toColor, ImageView iv) { public static void animateGrayScale(int fromColor, int toColor, ImageView iv, final Runnable endRunnable) { if (iv instanceof AlphaControlledSlashImageView) { if (iv instanceof AlphaControlledSlashImageView) { ((AlphaControlledSlashImageView)iv) ((AlphaControlledSlashImageView)iv) .setFinalImageTintList(ColorStateList.valueOf(toColor)); .setFinalImageTintList(ColorStateList.valueOf(toColor)); Loading @@ -175,10 +180,16 @@ public class QSIconViewImpl extends QSIconView { setTint(iv, Color.argb(alpha, channel, channel, channel)); setTint(iv, Color.argb(alpha, channel, channel, channel)); }); }); anim.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { endRunnable.run(); } }); anim.start(); anim.start(); } else { } else { setTint(iv, toColor); setTint(iv, toColor); endRunnable.run(); } } } } Loading
packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java +19 −6 Original line number Original line Diff line number Diff line Loading @@ -41,6 +41,7 @@ import com.android.systemui.qs.AlphaControlledSignalTileView; import com.android.systemui.qs.QSDetailItems; import com.android.systemui.qs.QSDetailItems; import com.android.systemui.qs.QSDetailItems.Item; import com.android.systemui.qs.QSDetailItems.Item; import com.android.systemui.qs.QSHost; import com.android.systemui.qs.QSHost; import com.android.systemui.qs.tileimpl.QSIconViewImpl; import com.android.systemui.qs.tileimpl.QSTileImpl; import com.android.systemui.qs.tileimpl.QSTileImpl; import com.android.systemui.statusbar.policy.NetworkController; import com.android.systemui.statusbar.policy.NetworkController; import com.android.systemui.statusbar.policy.NetworkController.AccessPointController; import com.android.systemui.statusbar.policy.NetworkController.AccessPointController; Loading @@ -60,6 +61,7 @@ public class WifiTile extends QSTileImpl<SignalState> { protected final WifiSignalCallback mSignalCallback = new WifiSignalCallback(); protected final WifiSignalCallback mSignalCallback = new WifiSignalCallback(); private final ActivityStarter mActivityStarter; private final ActivityStarter mActivityStarter; private boolean mExpectDisabled; public WifiTile(QSHost host) { public WifiTile(QSHost host) { super(host); super(host); Loading Loading @@ -120,6 +122,15 @@ public class WifiTile extends QSTileImpl<SignalState> { // Immediately enter transient state when turning on wifi. // Immediately enter transient state when turning on wifi. refreshState(wifiEnabled ? null : ARG_SHOW_TRANSIENT_ENABLING); refreshState(wifiEnabled ? null : ARG_SHOW_TRANSIENT_ENABLING); mController.setWifiEnabled(!wifiEnabled); mController.setWifiEnabled(!wifiEnabled); mExpectDisabled = wifiEnabled; if (mExpectDisabled) { mHandler.postDelayed(() -> { if (mExpectDisabled) { mExpectDisabled = false; refreshState(); } }, QSIconViewImpl.QS_ANIM_LENGTH); } } } @Override @Override Loading @@ -143,11 +154,13 @@ public class WifiTile extends QSTileImpl<SignalState> { @Override @Override protected void handleUpdateState(SignalState state, Object arg) { protected void handleUpdateState(SignalState state, Object arg) { if (DEBUG) Log.d(TAG, "handleUpdateState arg=" + arg); if (DEBUG) Log.d(TAG, "handleUpdateState arg=" + arg); final CallbackInfo cb; final CallbackInfo cb = mSignalCallback.mInfo; if (arg != null && arg instanceof CallbackInfo) { if (mExpectDisabled) { cb = (CallbackInfo) arg; if (cb.enabled) { return; // Ignore updates until disabled event occurs. } else { } else { cb = mSignalCallback.mInfo; mExpectDisabled = false; } } } boolean transientEnabling = arg == ARG_SHOW_TRANSIENT_ENABLING; boolean transientEnabling = arg == ARG_SHOW_TRANSIENT_ENABLING; boolean wifiConnected = cb.enabled && (cb.wifiSignalIconId > 0) && (cb.ssid != null); boolean wifiConnected = cb.enabled && (cb.wifiSignalIconId > 0) && (cb.ssid != null); Loading Loading @@ -288,7 +301,7 @@ public class WifiTile extends QSTileImpl<SignalState> { if (isShowingDetail()) { if (isShowingDetail()) { mDetailAdapter.updateItems(); mDetailAdapter.updateItems(); } } refreshState(mInfo); refreshState(); } } } } Loading