Loading packages/SystemUI/animation/lib/src/com/android/systemui/animation/ViewUIComponent.java +17 −0 Original line number Original line Diff line number Diff line Loading @@ -18,8 +18,11 @@ package com.android.systemui.animation; import android.annotation.Nullable; import android.annotation.Nullable; import android.graphics.Canvas; import android.graphics.Canvas; import android.graphics.Outline; import android.graphics.Path; import android.graphics.PorterDuff; import android.graphics.PorterDuff; import android.graphics.Rect; import android.graphics.Rect; import android.graphics.RectF; import android.os.Build; import android.os.Build; import android.util.Log; import android.util.Log; import android.view.Surface; import android.view.Surface; Loading @@ -44,6 +47,9 @@ import java.util.concurrent.Executor; public class ViewUIComponent implements UIComponent { public class ViewUIComponent implements UIComponent { private static final String TAG = "ViewUIComponent"; private static final String TAG = "ViewUIComponent"; private static final boolean DEBUG = Build.IS_USERDEBUG || Log.isLoggable(TAG, Log.DEBUG); private static final boolean DEBUG = Build.IS_USERDEBUG || Log.isLoggable(TAG, Log.DEBUG); private final Path mClippingPath = new Path(); private final Outline mClippingOutline = new Outline(); private final OnDrawListener mOnDrawListener = this::postDraw; private final OnDrawListener mOnDrawListener = this::postDraw; private final View mView; private final View mView; Loading Loading @@ -182,6 +188,17 @@ public class ViewUIComponent implements UIComponent { canvas.scale( canvas.scale( (float) renderBounds.width() / realBounds.width(), (float) renderBounds.width() / realBounds.width(), (float) renderBounds.height() / realBounds.height()); (float) renderBounds.height() / realBounds.height()); if (mView.getClipToOutline()) { mView.getOutlineProvider().getOutline(mView, mClippingOutline); mClippingPath.reset(); RectF rect = new RectF(0, 0, mView.getWidth(), mView.getHeight()); final float cornerRadius = mClippingOutline.getRadius(); mClippingPath.addRoundRect(rect, cornerRadius, cornerRadius, Path.Direction.CW); mClippingPath.close(); canvas.clipPath(mClippingPath); } canvas.saveLayerAlpha(null, (int) (255 * mView.getAlpha())); canvas.saveLayerAlpha(null, (int) (255 * mView.getAlpha())); mView.draw(canvas); mView.draw(canvas); canvas.restore(); canvas.restore(); Loading Loading
packages/SystemUI/animation/lib/src/com/android/systemui/animation/ViewUIComponent.java +17 −0 Original line number Original line Diff line number Diff line Loading @@ -18,8 +18,11 @@ package com.android.systemui.animation; import android.annotation.Nullable; import android.annotation.Nullable; import android.graphics.Canvas; import android.graphics.Canvas; import android.graphics.Outline; import android.graphics.Path; import android.graphics.PorterDuff; import android.graphics.PorterDuff; import android.graphics.Rect; import android.graphics.Rect; import android.graphics.RectF; import android.os.Build; import android.os.Build; import android.util.Log; import android.util.Log; import android.view.Surface; import android.view.Surface; Loading @@ -44,6 +47,9 @@ import java.util.concurrent.Executor; public class ViewUIComponent implements UIComponent { public class ViewUIComponent implements UIComponent { private static final String TAG = "ViewUIComponent"; private static final String TAG = "ViewUIComponent"; private static final boolean DEBUG = Build.IS_USERDEBUG || Log.isLoggable(TAG, Log.DEBUG); private static final boolean DEBUG = Build.IS_USERDEBUG || Log.isLoggable(TAG, Log.DEBUG); private final Path mClippingPath = new Path(); private final Outline mClippingOutline = new Outline(); private final OnDrawListener mOnDrawListener = this::postDraw; private final OnDrawListener mOnDrawListener = this::postDraw; private final View mView; private final View mView; Loading Loading @@ -182,6 +188,17 @@ public class ViewUIComponent implements UIComponent { canvas.scale( canvas.scale( (float) renderBounds.width() / realBounds.width(), (float) renderBounds.width() / realBounds.width(), (float) renderBounds.height() / realBounds.height()); (float) renderBounds.height() / realBounds.height()); if (mView.getClipToOutline()) { mView.getOutlineProvider().getOutline(mView, mClippingOutline); mClippingPath.reset(); RectF rect = new RectF(0, 0, mView.getWidth(), mView.getHeight()); final float cornerRadius = mClippingOutline.getRadius(); mClippingPath.addRoundRect(rect, cornerRadius, cornerRadius, Path.Direction.CW); mClippingPath.close(); canvas.clipPath(mClippingPath); } canvas.saveLayerAlpha(null, (int) (255 * mView.getAlpha())); canvas.saveLayerAlpha(null, (int) (255 * mView.getAlpha())); mView.draw(canvas); mView.draw(canvas); canvas.restore(); canvas.restore(); Loading