Loading services/core/java/com/android/server/wm/AccessibilityController.java +66 −34 Original line number Diff line number Diff line Loading @@ -614,19 +614,15 @@ final class AccessibilityController { private final class ViewportWindow { private static final String SURFACE_TITLE = "Magnification Overlay"; private static final String PROPERTY_NAME_ALPHA = "alpha"; private static final int MIN_ALPHA = 0; private static final int MAX_ALPHA = 255; private final Region mBounds = new Region(); private final Rect mDirtyRect = new Rect(); private final Paint mPaint = new Paint(); private final ValueAnimator mShowHideFrameAnimator; private final SurfaceControl mSurfaceControl; private final Surface mSurface = new Surface(); private final AnimationController mAnimationController; private boolean mShown; private int mAlpha; Loading @@ -651,6 +647,9 @@ final class AccessibilityController { mSurfaceControl.setPosition(0, 0); mSurface.copyFrom(mSurfaceControl); mAnimationController = new AnimationController(context, mWindowManagerService.mH.getLooper()); TypedValue typedValue = new TypedValue(); context.getTheme().resolveAttribute(R.attr.colorActivatedHighlight, typedValue, true); Loading @@ -660,14 +659,6 @@ final class AccessibilityController { mPaint.setStrokeWidth(mBorderWidth); mPaint.setColor(borderColor); Interpolator interpolator = new DecelerateInterpolator(2.5f); final long longAnimationDuration = context.getResources().getInteger( com.android.internal.R.integer.config_longAnimTime); mShowHideFrameAnimator = ObjectAnimator.ofInt(this, PROPERTY_NAME_ALPHA, MIN_ALPHA, MAX_ALPHA); mShowHideFrameAnimator.setInterpolator(interpolator); mShowHideFrameAnimator.setDuration(longAnimationDuration); mInvalidated = true; } Loading @@ -677,24 +668,7 @@ final class AccessibilityController { return; } mShown = shown; if (animate) { if (mShowHideFrameAnimator.isRunning()) { mShowHideFrameAnimator.reverse(); } else { if (shown) { mShowHideFrameAnimator.start(); } else { mShowHideFrameAnimator.reverse(); } } } else { mShowHideFrameAnimator.cancel(); if (shown) { setAlpha(MAX_ALPHA); } else { setAlpha(MIN_ALPHA); } } mAnimationController.onFrameShownStateChanged(shown, animate); if (DEBUG_VIEWPORT_WINDOW) { Slog.i(LOG_TAG, "ViewportWindow shown: " + mShown); } Loading Loading @@ -801,6 +775,64 @@ final class AccessibilityController { mSurfaceControl.release(); mSurface.release(); } private final class AnimationController extends Handler { private static final String PROPERTY_NAME_ALPHA = "alpha"; private static final int MIN_ALPHA = 0; private static final int MAX_ALPHA = 255; private static final int MSG_FRAME_SHOWN_STATE_CHANGED = 1; private final ValueAnimator mShowHideFrameAnimator; public AnimationController(Context context, Looper looper) { super(looper); mShowHideFrameAnimator = ObjectAnimator.ofInt(ViewportWindow.this, PROPERTY_NAME_ALPHA, MIN_ALPHA, MAX_ALPHA); Interpolator interpolator = new DecelerateInterpolator(2.5f); final long longAnimationDuration = context.getResources().getInteger( com.android.internal.R.integer.config_longAnimTime); mShowHideFrameAnimator.setInterpolator(interpolator); mShowHideFrameAnimator.setDuration(longAnimationDuration); } public void onFrameShownStateChanged(boolean shown, boolean animate) { obtainMessage(MSG_FRAME_SHOWN_STATE_CHANGED, shown ? 1 : 0, animate ? 1 : 0).sendToTarget(); } @Override public void handleMessage(Message message) { switch (message.what) { case MSG_FRAME_SHOWN_STATE_CHANGED: { final boolean shown = message.arg1 == 1; final boolean animate = message.arg2 == 1; if (animate) { if (mShowHideFrameAnimator.isRunning()) { mShowHideFrameAnimator.reverse(); } else { if (shown) { mShowHideFrameAnimator.start(); } else { mShowHideFrameAnimator.reverse(); } } } else { mShowHideFrameAnimator.cancel(); if (shown) { setAlpha(MAX_ALPHA); } else { setAlpha(MIN_ALPHA); } } } break; } } } } } Loading Loading
services/core/java/com/android/server/wm/AccessibilityController.java +66 −34 Original line number Diff line number Diff line Loading @@ -614,19 +614,15 @@ final class AccessibilityController { private final class ViewportWindow { private static final String SURFACE_TITLE = "Magnification Overlay"; private static final String PROPERTY_NAME_ALPHA = "alpha"; private static final int MIN_ALPHA = 0; private static final int MAX_ALPHA = 255; private final Region mBounds = new Region(); private final Rect mDirtyRect = new Rect(); private final Paint mPaint = new Paint(); private final ValueAnimator mShowHideFrameAnimator; private final SurfaceControl mSurfaceControl; private final Surface mSurface = new Surface(); private final AnimationController mAnimationController; private boolean mShown; private int mAlpha; Loading @@ -651,6 +647,9 @@ final class AccessibilityController { mSurfaceControl.setPosition(0, 0); mSurface.copyFrom(mSurfaceControl); mAnimationController = new AnimationController(context, mWindowManagerService.mH.getLooper()); TypedValue typedValue = new TypedValue(); context.getTheme().resolveAttribute(R.attr.colorActivatedHighlight, typedValue, true); Loading @@ -660,14 +659,6 @@ final class AccessibilityController { mPaint.setStrokeWidth(mBorderWidth); mPaint.setColor(borderColor); Interpolator interpolator = new DecelerateInterpolator(2.5f); final long longAnimationDuration = context.getResources().getInteger( com.android.internal.R.integer.config_longAnimTime); mShowHideFrameAnimator = ObjectAnimator.ofInt(this, PROPERTY_NAME_ALPHA, MIN_ALPHA, MAX_ALPHA); mShowHideFrameAnimator.setInterpolator(interpolator); mShowHideFrameAnimator.setDuration(longAnimationDuration); mInvalidated = true; } Loading @@ -677,24 +668,7 @@ final class AccessibilityController { return; } mShown = shown; if (animate) { if (mShowHideFrameAnimator.isRunning()) { mShowHideFrameAnimator.reverse(); } else { if (shown) { mShowHideFrameAnimator.start(); } else { mShowHideFrameAnimator.reverse(); } } } else { mShowHideFrameAnimator.cancel(); if (shown) { setAlpha(MAX_ALPHA); } else { setAlpha(MIN_ALPHA); } } mAnimationController.onFrameShownStateChanged(shown, animate); if (DEBUG_VIEWPORT_WINDOW) { Slog.i(LOG_TAG, "ViewportWindow shown: " + mShown); } Loading Loading @@ -801,6 +775,64 @@ final class AccessibilityController { mSurfaceControl.release(); mSurface.release(); } private final class AnimationController extends Handler { private static final String PROPERTY_NAME_ALPHA = "alpha"; private static final int MIN_ALPHA = 0; private static final int MAX_ALPHA = 255; private static final int MSG_FRAME_SHOWN_STATE_CHANGED = 1; private final ValueAnimator mShowHideFrameAnimator; public AnimationController(Context context, Looper looper) { super(looper); mShowHideFrameAnimator = ObjectAnimator.ofInt(ViewportWindow.this, PROPERTY_NAME_ALPHA, MIN_ALPHA, MAX_ALPHA); Interpolator interpolator = new DecelerateInterpolator(2.5f); final long longAnimationDuration = context.getResources().getInteger( com.android.internal.R.integer.config_longAnimTime); mShowHideFrameAnimator.setInterpolator(interpolator); mShowHideFrameAnimator.setDuration(longAnimationDuration); } public void onFrameShownStateChanged(boolean shown, boolean animate) { obtainMessage(MSG_FRAME_SHOWN_STATE_CHANGED, shown ? 1 : 0, animate ? 1 : 0).sendToTarget(); } @Override public void handleMessage(Message message) { switch (message.what) { case MSG_FRAME_SHOWN_STATE_CHANGED: { final boolean shown = message.arg1 == 1; final boolean animate = message.arg2 == 1; if (animate) { if (mShowHideFrameAnimator.isRunning()) { mShowHideFrameAnimator.reverse(); } else { if (shown) { mShowHideFrameAnimator.start(); } else { mShowHideFrameAnimator.reverse(); } } } else { mShowHideFrameAnimator.cancel(); if (shown) { setAlpha(MAX_ALPHA); } else { setAlpha(MIN_ALPHA); } } } break; } } } } } Loading