Loading packages/SystemUI/res/layout/status_bar_notification_dismiss_all.xml +8 −7 Original line number Diff line number Diff line Loading @@ -19,15 +19,16 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:visibility="gone" android:clipChildren="false" android:clipToPadding="false"> android:paddingEnd="8dp" android:visibility="gone"> <com.android.systemui.statusbar.DismissViewButton style="@android:style/Widget.Material.Button.Borderless" android:id="@+id/dismiss_text" android:layout_width="48dp" android:layout_height="48dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="end" android:focusable="true" android:background="@drawable/ripple_drawable" android:contentDescription="@string/accessibility_clear_all"/> android:contentDescription="@string/accessibility_clear_all" android:text="@string/clear_all_notifications_text" android:textAllCaps="true"/> </com.android.systemui.statusbar.DismissView> packages/SystemUI/src/com/android/systemui/statusbar/DismissView.java +1 −23 Original line number Diff line number Diff line Loading @@ -17,14 +17,12 @@ package com.android.systemui.statusbar; import android.content.Context; import android.graphics.Rect; import android.util.AttributeSet; import android.view.View; import com.android.systemui.R; public class DismissView extends StackScrollerDecorView { private boolean mDismissAllInProgress; private DismissViewButton mDismissButton; public DismissView(Context context, AttributeSet attrs) { Loading Loading @@ -53,27 +51,7 @@ public class DismissView extends StackScrollerDecorView { || touchY > mContent.getY() + mContent.getHeight(); } public void showClearButton() { mDismissButton.showButton(); } public void setDismissAllInProgress(boolean dismissAllInProgress) { if (dismissAllInProgress) { setClipBounds(null); } mDismissAllInProgress = dismissAllInProgress; } @Override public void setClipBounds(Rect clipBounds) { if (mDismissAllInProgress) { // we don't want any clipping to happen! return; } super.setClipBounds(clipBounds); } public boolean isButtonVisible() { return mDismissButton.isButtonStatic(); return mDismissButton.getAlpha() != 0.0f; } } packages/SystemUI/src/com/android/systemui/statusbar/DismissViewButton.java +1 −71 Original line number Diff line number Diff line Loading @@ -17,22 +17,13 @@ package com.android.systemui.statusbar; import android.content.Context; import android.graphics.Canvas; import android.graphics.Rect; import android.graphics.drawable.AnimatedVectorDrawable; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import com.android.systemui.R; import com.android.systemui.statusbar.stack.NotificationStackScrollLayout; public class DismissViewButton extends Button { private AnimatedVectorDrawable mAnimatedDismissDrawable; private final Drawable mStaticDismissDrawable; private Drawable mActiveDrawable; public class DismissViewButton extends AlphaOptimizedButton { public DismissViewButton(Context context) { this(context, null); Loading @@ -49,55 +40,6 @@ public class DismissViewButton extends Button { public DismissViewButton(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); mAnimatedDismissDrawable = (AnimatedVectorDrawable) getContext().getDrawable( R.drawable.dismiss_all_shape_animation).mutate(); mAnimatedDismissDrawable.setCallback(this); mAnimatedDismissDrawable.setBounds(0, 0, mAnimatedDismissDrawable.getIntrinsicWidth(), mAnimatedDismissDrawable.getIntrinsicHeight()); mStaticDismissDrawable = getContext().getDrawable(R.drawable.dismiss_all_shape); mStaticDismissDrawable.setBounds(0, 0, mStaticDismissDrawable.getIntrinsicWidth(), mStaticDismissDrawable.getIntrinsicHeight()); mStaticDismissDrawable.setCallback(this); mActiveDrawable = mStaticDismissDrawable; } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.save(); int drawableHeight = mActiveDrawable.getBounds().height(); boolean isRtl = (getLayoutDirection() == View.LAYOUT_DIRECTION_RTL); int dx = isRtl ? getWidth() / 2 + drawableHeight / 2 : getWidth() / 2 - drawableHeight / 2; canvas.translate(dx, getHeight() / 2.0f + drawableHeight / 2.0f); canvas.scale(isRtl ? -1.0f : 1.0f, -1.0f); mActiveDrawable.draw(canvas); canvas.restore(); } @Override public boolean performClick() { if (!mAnimatedDismissDrawable.isRunning()) { mActiveDrawable = mAnimatedDismissDrawable; mAnimatedDismissDrawable.start(); } return super.performClick(); } @Override protected boolean verifyDrawable(Drawable who) { return super.verifyDrawable(who) || who == mAnimatedDismissDrawable || who == mStaticDismissDrawable; } @Override public boolean hasOverlappingRendering() { return false; } /** Loading @@ -118,16 +60,4 @@ public class DismissViewButton extends Button { outRect.top += translationY; outRect.bottom += translationY; } public void showButton() { mActiveDrawable = mStaticDismissDrawable; invalidate(); } /** * @return Whether the button is currently static and not being animated. */ public boolean isButtonStatic() { return mActiveDrawable == mStaticDismissDrawable; } } packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java +0 −8 Original line number Diff line number Diff line Loading @@ -2093,12 +2093,6 @@ public class NotificationStackScrollLayout extends ViewGroup generateAddAnimation(child, false /* fromMoreCard */); updateAnimationState(child); updateChronometerForChild(child); if (canChildBeDismissed(child)) { // Make sure the dismissButton is visible and not in the animated state. // We need to do this to avoid a race where a clearable notification is added after the // dismiss animation is finished mDismissView.showClearButton(); } } private void updateHideSensitiveForChild(View child) { Loading Loading @@ -2977,7 +2971,6 @@ public class NotificationStackScrollLayout extends ViewGroup mDismissView.performVisibilityAnimation(false, dimissHideFinishRunnable); } else { dimissHideFinishRunnable.run(); mDismissView.showClearButton(); } } } Loading @@ -2985,7 +2978,6 @@ public class NotificationStackScrollLayout extends ViewGroup public void setDismissAllInProgress(boolean dismissAllInProgress) { mDismissAllInProgress = dismissAllInProgress; mDismissView.setDismissAllInProgress(dismissAllInProgress); mAmbientState.setDismissAllInProgress(dismissAllInProgress); if (dismissAllInProgress) { disableClipOptimization(); Loading Loading
packages/SystemUI/res/layout/status_bar_notification_dismiss_all.xml +8 −7 Original line number Diff line number Diff line Loading @@ -19,15 +19,16 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:visibility="gone" android:clipChildren="false" android:clipToPadding="false"> android:paddingEnd="8dp" android:visibility="gone"> <com.android.systemui.statusbar.DismissViewButton style="@android:style/Widget.Material.Button.Borderless" android:id="@+id/dismiss_text" android:layout_width="48dp" android:layout_height="48dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="end" android:focusable="true" android:background="@drawable/ripple_drawable" android:contentDescription="@string/accessibility_clear_all"/> android:contentDescription="@string/accessibility_clear_all" android:text="@string/clear_all_notifications_text" android:textAllCaps="true"/> </com.android.systemui.statusbar.DismissView>
packages/SystemUI/src/com/android/systemui/statusbar/DismissView.java +1 −23 Original line number Diff line number Diff line Loading @@ -17,14 +17,12 @@ package com.android.systemui.statusbar; import android.content.Context; import android.graphics.Rect; import android.util.AttributeSet; import android.view.View; import com.android.systemui.R; public class DismissView extends StackScrollerDecorView { private boolean mDismissAllInProgress; private DismissViewButton mDismissButton; public DismissView(Context context, AttributeSet attrs) { Loading Loading @@ -53,27 +51,7 @@ public class DismissView extends StackScrollerDecorView { || touchY > mContent.getY() + mContent.getHeight(); } public void showClearButton() { mDismissButton.showButton(); } public void setDismissAllInProgress(boolean dismissAllInProgress) { if (dismissAllInProgress) { setClipBounds(null); } mDismissAllInProgress = dismissAllInProgress; } @Override public void setClipBounds(Rect clipBounds) { if (mDismissAllInProgress) { // we don't want any clipping to happen! return; } super.setClipBounds(clipBounds); } public boolean isButtonVisible() { return mDismissButton.isButtonStatic(); return mDismissButton.getAlpha() != 0.0f; } }
packages/SystemUI/src/com/android/systemui/statusbar/DismissViewButton.java +1 −71 Original line number Diff line number Diff line Loading @@ -17,22 +17,13 @@ package com.android.systemui.statusbar; import android.content.Context; import android.graphics.Canvas; import android.graphics.Rect; import android.graphics.drawable.AnimatedVectorDrawable; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import com.android.systemui.R; import com.android.systemui.statusbar.stack.NotificationStackScrollLayout; public class DismissViewButton extends Button { private AnimatedVectorDrawable mAnimatedDismissDrawable; private final Drawable mStaticDismissDrawable; private Drawable mActiveDrawable; public class DismissViewButton extends AlphaOptimizedButton { public DismissViewButton(Context context) { this(context, null); Loading @@ -49,55 +40,6 @@ public class DismissViewButton extends Button { public DismissViewButton(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); mAnimatedDismissDrawable = (AnimatedVectorDrawable) getContext().getDrawable( R.drawable.dismiss_all_shape_animation).mutate(); mAnimatedDismissDrawable.setCallback(this); mAnimatedDismissDrawable.setBounds(0, 0, mAnimatedDismissDrawable.getIntrinsicWidth(), mAnimatedDismissDrawable.getIntrinsicHeight()); mStaticDismissDrawable = getContext().getDrawable(R.drawable.dismiss_all_shape); mStaticDismissDrawable.setBounds(0, 0, mStaticDismissDrawable.getIntrinsicWidth(), mStaticDismissDrawable.getIntrinsicHeight()); mStaticDismissDrawable.setCallback(this); mActiveDrawable = mStaticDismissDrawable; } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.save(); int drawableHeight = mActiveDrawable.getBounds().height(); boolean isRtl = (getLayoutDirection() == View.LAYOUT_DIRECTION_RTL); int dx = isRtl ? getWidth() / 2 + drawableHeight / 2 : getWidth() / 2 - drawableHeight / 2; canvas.translate(dx, getHeight() / 2.0f + drawableHeight / 2.0f); canvas.scale(isRtl ? -1.0f : 1.0f, -1.0f); mActiveDrawable.draw(canvas); canvas.restore(); } @Override public boolean performClick() { if (!mAnimatedDismissDrawable.isRunning()) { mActiveDrawable = mAnimatedDismissDrawable; mAnimatedDismissDrawable.start(); } return super.performClick(); } @Override protected boolean verifyDrawable(Drawable who) { return super.verifyDrawable(who) || who == mAnimatedDismissDrawable || who == mStaticDismissDrawable; } @Override public boolean hasOverlappingRendering() { return false; } /** Loading @@ -118,16 +60,4 @@ public class DismissViewButton extends Button { outRect.top += translationY; outRect.bottom += translationY; } public void showButton() { mActiveDrawable = mStaticDismissDrawable; invalidate(); } /** * @return Whether the button is currently static and not being animated. */ public boolean isButtonStatic() { return mActiveDrawable == mStaticDismissDrawable; } }
packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java +0 −8 Original line number Diff line number Diff line Loading @@ -2093,12 +2093,6 @@ public class NotificationStackScrollLayout extends ViewGroup generateAddAnimation(child, false /* fromMoreCard */); updateAnimationState(child); updateChronometerForChild(child); if (canChildBeDismissed(child)) { // Make sure the dismissButton is visible and not in the animated state. // We need to do this to avoid a race where a clearable notification is added after the // dismiss animation is finished mDismissView.showClearButton(); } } private void updateHideSensitiveForChild(View child) { Loading Loading @@ -2977,7 +2971,6 @@ public class NotificationStackScrollLayout extends ViewGroup mDismissView.performVisibilityAnimation(false, dimissHideFinishRunnable); } else { dimissHideFinishRunnable.run(); mDismissView.showClearButton(); } } } Loading @@ -2985,7 +2978,6 @@ public class NotificationStackScrollLayout extends ViewGroup public void setDismissAllInProgress(boolean dismissAllInProgress) { mDismissAllInProgress = dismissAllInProgress; mDismissView.setDismissAllInProgress(dismissAllInProgress); mAmbientState.setDismissAllInProgress(dismissAllInProgress); if (dismissAllInProgress) { disableClipOptimization(); Loading