Loading graphics/java/android/graphics/drawable/TransitionDrawable.java +12 −0 Original line number Diff line number Diff line Loading @@ -117,6 +117,18 @@ public class TransitionDrawable extends LayerDrawable implements Drawable.Callba invalidateSelf(); } /** * Show the second layer on top of the first layer immediately * * @hide */ public void showSecondLayer() { mAlpha = 255; mReverse = false; mTransitionState = TRANSITION_NONE; invalidateSelf(); } /** * Show only the first layer. */ Loading packages/SystemUI/src/com/android/systemui/qs/QSDetailClipper.java +4 −0 Original line number Diff line number Diff line Loading @@ -100,4 +100,8 @@ public class QSDetailClipper { mAnimator = null; }; }; public void showBackground() { mBackground.showSecondLayer(); } } packages/SystemUI/src/com/android/systemui/qs/QSFragment.java +8 −0 Original line number Diff line number Diff line Loading @@ -94,6 +94,13 @@ public class QSFragment extends Fragment implements QS { if (savedInstanceState != null) { setExpanded(savedInstanceState.getBoolean(EXTRA_EXPANDED)); setListening(savedInstanceState.getBoolean(EXTRA_LISTENING)); int[] loc = new int[2]; View edit = view.findViewById(android.R.id.edit); edit.getLocationInWindow(loc); int x = loc[0] + edit.getWidth() / 2; int y = loc[1] + edit.getHeight() / 2; mQSCustomizer.setEditLocation(x, y); mQSCustomizer.restoreInstanceState(savedInstanceState); } } Loading @@ -110,6 +117,7 @@ public class QSFragment extends Fragment implements QS { super.onSaveInstanceState(outState); outState.putBoolean(EXTRA_EXPANDED, mQsExpanded); outState.putBoolean(EXTRA_LISTENING, mListening); mQSCustomizer.saveInstanceState(outState); } @VisibleForTesting Loading packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java +54 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,9 @@ import android.animation.Animator.AnimatorListener; import android.animation.AnimatorListenerAdapter; import android.content.Context; import android.content.res.Configuration; import android.graphics.drawable.Drawable; import android.graphics.drawable.TransitionDrawable; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.support.v7.widget.DefaultItemAnimator; Loading @@ -42,6 +45,7 @@ import com.android.systemui.Dependency; import com.android.systemui.R; import com.android.systemui.plugins.qs.QS; import com.android.systemui.plugins.qs.QSTile; import com.android.systemui.qs.QSContainerImpl; import com.android.systemui.qs.QSDetailClipper; import com.android.systemui.qs.QSTileHost; import com.android.systemui.statusbar.phone.NotificationsQuickSettingsContainer; Loading @@ -60,6 +64,7 @@ import java.util.List; public class QSCustomizer extends LinearLayout implements OnMenuItemClickListener { private static final int MENU_RESET = Menu.FIRST; private static final String EXTRA_QS_CUSTOMIZING = "qs_customizing"; private final QSDetailClipper mClipper; Loading Loading @@ -109,11 +114,16 @@ public class QSCustomizer extends LinearLayout implements OnMenuItemClickListene DefaultItemAnimator animator = new DefaultItemAnimator(); animator.setMoveDuration(TileAdapter.MOVE_DURATION); mRecyclerView.setItemAnimator(animator); updateNavBackDrop(getResources().getConfiguration()); } @Override protected void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); updateNavBackDrop(newConfig); } private void updateNavBackDrop(Configuration newConfig) { View navBackdrop = findViewById(R.id.nav_bar_background); if (navBackdrop != null) { boolean shouldShow = newConfig.smallestScreenWidthDp >= 600 Loading Loading @@ -154,6 +164,21 @@ public class QSCustomizer extends LinearLayout implements OnMenuItemClickListene } } public void showImmediately() { if (!isShown) { setVisibility(VISIBLE); mClipper.showBackground(); isShown = true; setTileSpecs(); setCustomizing(true); queryTiles(); mNotifQsContainer.setCustomizerAnimating(false); mNotifQsContainer.setCustomizerShowing(true); Dependency.get(KeyguardMonitor.class).addCallback(mKeyguardCallback); } } private void queryTiles() { mFinishedFetchingTiles = false; Runnable tileQueryFetchCompletion = () -> { Loading Loading @@ -227,6 +252,35 @@ public class QSCustomizer extends LinearLayout implements OnMenuItemClickListene } } public void saveInstanceState(Bundle outState) { if (isShown) { Dependency.get(KeyguardMonitor.class).removeCallback(mKeyguardCallback); } outState.putBoolean(EXTRA_QS_CUSTOMIZING, mCustomizing); } public void restoreInstanceState(Bundle savedInstanceState) { boolean customizing = savedInstanceState.getBoolean(EXTRA_QS_CUSTOMIZING); if (customizing) { setVisibility(VISIBLE); addOnLayoutChangeListener(new OnLayoutChangeListener() { @Override public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { removeOnLayoutChangeListener(this); showImmediately(); } }); } } public void setEditLocation(int x, int y) { mX = x; mY = y; } private final Callback mKeyguardCallback = () -> { if (!isAttachedToWindow()) return; if (Dependency.get(KeyguardMonitor.class).isShowing() && !mOpening) { Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +5 −0 Original line number Diff line number Diff line Loading @@ -3487,6 +3487,11 @@ public class StatusBar extends SystemUI implements DemoMode, pw.print (" "); mNotificationPanel.dump(fd, pw, args); } pw.println(" mStackScroller: "); if (mStackScroller != null) { pw.print (" "); mStackScroller.dump(fd, pw, args); } DozeLog.dump(pw); Loading Loading
graphics/java/android/graphics/drawable/TransitionDrawable.java +12 −0 Original line number Diff line number Diff line Loading @@ -117,6 +117,18 @@ public class TransitionDrawable extends LayerDrawable implements Drawable.Callba invalidateSelf(); } /** * Show the second layer on top of the first layer immediately * * @hide */ public void showSecondLayer() { mAlpha = 255; mReverse = false; mTransitionState = TRANSITION_NONE; invalidateSelf(); } /** * Show only the first layer. */ Loading
packages/SystemUI/src/com/android/systemui/qs/QSDetailClipper.java +4 −0 Original line number Diff line number Diff line Loading @@ -100,4 +100,8 @@ public class QSDetailClipper { mAnimator = null; }; }; public void showBackground() { mBackground.showSecondLayer(); } }
packages/SystemUI/src/com/android/systemui/qs/QSFragment.java +8 −0 Original line number Diff line number Diff line Loading @@ -94,6 +94,13 @@ public class QSFragment extends Fragment implements QS { if (savedInstanceState != null) { setExpanded(savedInstanceState.getBoolean(EXTRA_EXPANDED)); setListening(savedInstanceState.getBoolean(EXTRA_LISTENING)); int[] loc = new int[2]; View edit = view.findViewById(android.R.id.edit); edit.getLocationInWindow(loc); int x = loc[0] + edit.getWidth() / 2; int y = loc[1] + edit.getHeight() / 2; mQSCustomizer.setEditLocation(x, y); mQSCustomizer.restoreInstanceState(savedInstanceState); } } Loading @@ -110,6 +117,7 @@ public class QSFragment extends Fragment implements QS { super.onSaveInstanceState(outState); outState.putBoolean(EXTRA_EXPANDED, mQsExpanded); outState.putBoolean(EXTRA_LISTENING, mListening); mQSCustomizer.saveInstanceState(outState); } @VisibleForTesting Loading
packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java +54 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,9 @@ import android.animation.Animator.AnimatorListener; import android.animation.AnimatorListenerAdapter; import android.content.Context; import android.content.res.Configuration; import android.graphics.drawable.Drawable; import android.graphics.drawable.TransitionDrawable; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.support.v7.widget.DefaultItemAnimator; Loading @@ -42,6 +45,7 @@ import com.android.systemui.Dependency; import com.android.systemui.R; import com.android.systemui.plugins.qs.QS; import com.android.systemui.plugins.qs.QSTile; import com.android.systemui.qs.QSContainerImpl; import com.android.systemui.qs.QSDetailClipper; import com.android.systemui.qs.QSTileHost; import com.android.systemui.statusbar.phone.NotificationsQuickSettingsContainer; Loading @@ -60,6 +64,7 @@ import java.util.List; public class QSCustomizer extends LinearLayout implements OnMenuItemClickListener { private static final int MENU_RESET = Menu.FIRST; private static final String EXTRA_QS_CUSTOMIZING = "qs_customizing"; private final QSDetailClipper mClipper; Loading Loading @@ -109,11 +114,16 @@ public class QSCustomizer extends LinearLayout implements OnMenuItemClickListene DefaultItemAnimator animator = new DefaultItemAnimator(); animator.setMoveDuration(TileAdapter.MOVE_DURATION); mRecyclerView.setItemAnimator(animator); updateNavBackDrop(getResources().getConfiguration()); } @Override protected void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); updateNavBackDrop(newConfig); } private void updateNavBackDrop(Configuration newConfig) { View navBackdrop = findViewById(R.id.nav_bar_background); if (navBackdrop != null) { boolean shouldShow = newConfig.smallestScreenWidthDp >= 600 Loading Loading @@ -154,6 +164,21 @@ public class QSCustomizer extends LinearLayout implements OnMenuItemClickListene } } public void showImmediately() { if (!isShown) { setVisibility(VISIBLE); mClipper.showBackground(); isShown = true; setTileSpecs(); setCustomizing(true); queryTiles(); mNotifQsContainer.setCustomizerAnimating(false); mNotifQsContainer.setCustomizerShowing(true); Dependency.get(KeyguardMonitor.class).addCallback(mKeyguardCallback); } } private void queryTiles() { mFinishedFetchingTiles = false; Runnable tileQueryFetchCompletion = () -> { Loading Loading @@ -227,6 +252,35 @@ public class QSCustomizer extends LinearLayout implements OnMenuItemClickListene } } public void saveInstanceState(Bundle outState) { if (isShown) { Dependency.get(KeyguardMonitor.class).removeCallback(mKeyguardCallback); } outState.putBoolean(EXTRA_QS_CUSTOMIZING, mCustomizing); } public void restoreInstanceState(Bundle savedInstanceState) { boolean customizing = savedInstanceState.getBoolean(EXTRA_QS_CUSTOMIZING); if (customizing) { setVisibility(VISIBLE); addOnLayoutChangeListener(new OnLayoutChangeListener() { @Override public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { removeOnLayoutChangeListener(this); showImmediately(); } }); } } public void setEditLocation(int x, int y) { mX = x; mY = y; } private final Callback mKeyguardCallback = () -> { if (!isAttachedToWindow()) return; if (Dependency.get(KeyguardMonitor.class).isShowing() && !mOpening) { Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +5 −0 Original line number Diff line number Diff line Loading @@ -3487,6 +3487,11 @@ public class StatusBar extends SystemUI implements DemoMode, pw.print (" "); mNotificationPanel.dump(fd, pw, args); } pw.println(" mStackScroller: "); if (mStackScroller != null) { pw.print (" "); mStackScroller.dump(fd, pw, args); } DozeLog.dump(pw); Loading