Loading core/java/com/android/internal/statusbar/IStatusBar.aidl +5 −0 Original line number Diff line number Diff line Loading @@ -69,5 +69,10 @@ oneway interface IStatusBar void showAssistDisclosure(); void startAssist(in Bundle args); /** * Notifies the status bar that a camera launch gesture has been detected. */ void onCameraLaunchGestureDetected(); } packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java +13 −0 Original line number Diff line number Diff line Loading @@ -64,6 +64,7 @@ public class CommandQueue extends IStatusBar.Stub { private static final int MSG_APP_TRANSITION_STARTING = 21 << MSG_SHIFT; private static final int MSG_ASSIST_DISCLOSURE = 22 << MSG_SHIFT; private static final int MSG_START_ASSIST = 23 << MSG_SHIFT; private static final int MSG_CAMERA_LAUNCH_GESTURE = 24 << MSG_SHIFT; public static final int FLAG_EXCLUDE_NONE = 0; public static final int FLAG_EXCLUDE_SEARCH_PANEL = 1 << 0; Loading Loading @@ -109,6 +110,7 @@ public class CommandQueue extends IStatusBar.Stub { public void appTransitionStarting(long startTime, long duration); public void showAssistDisclosure(); public void startAssist(Bundle args); public void onCameraLaunchGestureDetected(); } public CommandQueue(Callbacks callbacks, StatusBarIconList list) { Loading Loading @@ -293,6 +295,14 @@ public class CommandQueue extends IStatusBar.Stub { } } @Override public void onCameraLaunchGestureDetected() { synchronized (mList) { mHandler.removeMessages(MSG_CAMERA_LAUNCH_GESTURE); mHandler.obtainMessage(MSG_CAMERA_LAUNCH_GESTURE).sendToTarget(); } } private final class H extends Handler { public void handleMessage(Message msg) { final int what = msg.what & MSG_MASK; Loading Loading @@ -391,6 +401,9 @@ public class CommandQueue extends IStatusBar.Stub { case MSG_START_ASSIST: mCallbacks.startAssist((Bundle) msg.obj); break; case MSG_CAMERA_LAUNCH_GESTURE: mCallbacks.onCameraLaunchGestureDetected(); break; } } } Loading packages/SystemUI/src/com/android/systemui/statusbar/KeyguardAffordanceView.java +46 −4 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import android.view.ViewAnimationUtils; import android.view.animation.AnimationUtils; import android.view.animation.Interpolator; import android.widget.ImageView; import com.android.systemui.R; import com.android.systemui.statusbar.phone.KeyguardAffordanceHelper; import com.android.systemui.statusbar.phone.PhoneStatusBar; Loading Loading @@ -79,6 +80,7 @@ public class KeyguardAffordanceView extends ImageView { private float mRestingAlpha = KeyguardAffordanceHelper.SWIPE_RESTING_ALPHA_AMOUNT; private boolean mSupportHardware; private boolean mFinishing; private boolean mLaunchingAffordance; private CanvasProperty<Float> mHwCircleRadius; private CanvasProperty<Float> mHwCenterX; Loading Loading @@ -152,7 +154,7 @@ public class KeyguardAffordanceView extends ImageView { @Override protected void onDraw(Canvas canvas) { mSupportHardware = canvas.isHardwareAccelerated(); mSupportHardware = false;//canvas.isHardwareAccelerated(); drawBackgroundCircle(canvas); canvas.save(); canvas.scale(mImageScale, mImageScale, getWidth() / 2, getHeight() / 2); Loading @@ -161,9 +163,11 @@ public class KeyguardAffordanceView extends ImageView { } public void setPreviewView(View v) { View oldPreviewView = mPreviewView; mPreviewView = v; if (mPreviewView != null) { mPreviewView.setVisibility(INVISIBLE); mPreviewView.setVisibility(mLaunchingAffordance ? oldPreviewView.getVisibility() : INVISIBLE); } } Loading @@ -176,7 +180,7 @@ public class KeyguardAffordanceView extends ImageView { } private void drawBackgroundCircle(Canvas canvas) { if (mCircleRadius > 0) { if (mCircleRadius > 0 || mFinishing) { if (mFinishing && mSupportHardware) { DisplayListCanvas displayListCanvas = (DisplayListCanvas) canvas; displayListCanvas.drawCircle(mHwCenterX, mHwCenterY, mHwCircleRadius, Loading Loading @@ -207,11 +211,12 @@ public class KeyguardAffordanceView extends ImageView { cancelAnimator(mPreviewClipper); mFinishing = true; mCircleStartRadius = mCircleRadius; float maxCircleSize = getMaxCircleSize(); final float maxCircleSize = getMaxCircleSize(); Animator animatorToRadius; if (mSupportHardware) { initHwProperties(); animatorToRadius = getRtAnimatorToRadius(maxCircleSize); startRtAlphaFadeIn(); } else { animatorToRadius = getAnimatorToRadius(maxCircleSize); } Loading @@ -222,6 +227,8 @@ public class KeyguardAffordanceView extends ImageView { public void onAnimationEnd(Animator animation) { mAnimationEndRunnable.run(); mFinishing = false; mCircleRadius = maxCircleSize; invalidate(); } }); animatorToRadius.start(); Loading @@ -241,6 +248,36 @@ public class KeyguardAffordanceView extends ImageView { } } /** * Fades in the Circle on the RenderThread. It's used when finishing the circle when it had * alpha 0 in the beginning. */ private void startRtAlphaFadeIn() { if (mCircleRadius == 0 && mPreviewView == null) { Paint modifiedPaint = new Paint(mCirclePaint); modifiedPaint.setColor(mCircleColor); modifiedPaint.setAlpha(0); mHwCirclePaint = CanvasProperty.createPaint(modifiedPaint); RenderNodeAnimator animator = new RenderNodeAnimator(mHwCirclePaint, RenderNodeAnimator.PAINT_ALPHA, 255); animator.setTarget(this); animator.setInterpolator(PhoneStatusBar.ALPHA_IN); animator.setDuration(250); animator.start(); } } public void instantFinishAnimation() { cancelAnimator(mPreviewClipper); if (mPreviewView != null) { mPreviewView.setClipBounds(null); mPreviewView.setVisibility(View.VISIBLE); } mCircleRadius = getMaxCircleSize(); setImageAlpha(0, false); invalidate(); } private void startRtCircleFadeOut(long duration) { RenderNodeAnimator animator = new RenderNodeAnimator(mHwCirclePaint, RenderNodeAnimator.PAINT_ALPHA, 0); Loading Loading @@ -443,6 +480,7 @@ public class KeyguardAffordanceView extends ImageView { public void setImageAlpha(float alpha, boolean animate, long duration, Interpolator interpolator, Runnable runnable) { cancelAnimator(mAlphaAnimator); alpha = mLaunchingAffordance ? 0 : alpha; int endAlpha = (int) (alpha * 255); final Drawable background = getBackground(); if (!animate) { Loading Loading @@ -509,4 +547,8 @@ public class KeyguardAffordanceView extends ImageView { return false; } } public void setLaunchingAffordance(boolean launchingAffordance) { mLaunchingAffordance = launchingAffordance; } } packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardAffordanceHelper.java +61 −23 Original line number Diff line number Diff line Loading @@ -86,9 +86,9 @@ public class KeyguardAffordanceHelper { mContext = context; mCallback = callback; initIcons(); updateIcon(mLeftIcon, 0.0f, mLeftIcon.getRestingAlpha(), false, false, true); updateIcon(mCenterIcon, 0.0f, mCenterIcon.getRestingAlpha(), false, false, true); updateIcon(mRightIcon, 0.0f, mRightIcon.getRestingAlpha(), false, false, true); updateIcon(mLeftIcon, 0.0f, mLeftIcon.getRestingAlpha(), false, false, true, false); updateIcon(mCenterIcon, 0.0f, mCenterIcon.getRestingAlpha(), false, false, true, false); updateIcon(mRightIcon, 0.0f, mRightIcon.getRestingAlpha(), false, false, true, false); initDimens(); } Loading Loading @@ -144,9 +144,7 @@ public class KeyguardAffordanceHelper { } else { mTouchSlopExeeded = false; } mCallback.onSwipingStarted(targetView == mRightIcon); mSwipingInProgress = true; mTargetedView = targetView; startSwiping(targetView); mInitialTouchX = x; mInitialTouchY = y; mTranslationOnDown = mTranslation; Loading Loading @@ -192,6 +190,12 @@ public class KeyguardAffordanceHelper { return true; } private void startSwiping(View targetView) { mCallback.onSwipingStarted(targetView == mRightIcon); mSwipingInProgress = true; mTargetedView = targetView; } private View getIconAtPosition(float x, float y) { if (leftSwipePossible() && isOnIcon(mLeftIcon, x, y)) { return mLeftIcon; Loading Loading @@ -324,7 +328,7 @@ public class KeyguardAffordanceHelper { boolean velIsInWrongDirection = vel * mTranslation < 0; snapBack |= Math.abs(vel) > mMinFlingVelocity && velIsInWrongDirection; vel = snapBack ^ velIsInWrongDirection ? 0 : vel; fling(vel, snapBack || forceSnapBack); fling(vel, snapBack || forceSnapBack, mTranslation < 0); } private boolean isBelowFalsingThreshold() { Loading @@ -336,9 +340,8 @@ public class KeyguardAffordanceHelper { return (int) (mMinTranslationAmount * factor); } private void fling(float vel, final boolean snapBack) { float target = mTranslation < 0 ? -mCallback.getMaxTranslationDistance() private void fling(float vel, final boolean snapBack, boolean right) { float target = right ? -mCallback.getMaxTranslationDistance() : mCallback.getMaxTranslationDistance(); target = snapBack ? 0 : target; Loading @@ -352,8 +355,8 @@ public class KeyguardAffordanceHelper { }); animator.addListener(mFlingEndListener); if (!snapBack) { startFinishingCircleAnimation(vel * 0.375f, mAnimationEndRunnable); mCallback.onAnimationToSideStarted(mTranslation < 0, mTranslation, vel); startFinishingCircleAnimation(vel * 0.375f, mAnimationEndRunnable, right); mCallback.onAnimationToSideStarted(right, mTranslation, vel); } else { reset(true); } Loading @@ -364,8 +367,9 @@ public class KeyguardAffordanceHelper { } } private void startFinishingCircleAnimation(float velocity, Runnable mAnimationEndRunnable) { KeyguardAffordanceView targetView = mTranslation > 0 ? mLeftIcon : mRightIcon; private void startFinishingCircleAnimation(float velocity, Runnable mAnimationEndRunnable, boolean right) { KeyguardAffordanceView targetView = right ? mRightIcon : mLeftIcon; targetView.finishAnimation(velocity, mAnimationEndRunnable); } Loading @@ -383,19 +387,20 @@ public class KeyguardAffordanceHelper { fadeOutAlpha = Math.max(fadeOutAlpha, 0.0f); boolean animateIcons = isReset && animateReset; boolean forceNoCircleAnimation = isReset && !animateReset; float radius = getRadiusFromTranslation(absTranslation); boolean slowAnimation = isReset && isBelowFalsingThreshold(); if (!isReset) { updateIcon(targetView, radius, alpha + fadeOutAlpha * targetView.getRestingAlpha(), false, false, false); false, false, false, false); } else { updateIcon(targetView, 0.0f, fadeOutAlpha * targetView.getRestingAlpha(), animateIcons, slowAnimation, false); animateIcons, slowAnimation, false, forceNoCircleAnimation); } updateIcon(otherView, 0.0f, fadeOutAlpha * otherView.getRestingAlpha(), animateIcons, slowAnimation, false); animateIcons, slowAnimation, false, forceNoCircleAnimation); updateIcon(mCenterIcon, 0.0f, fadeOutAlpha * mCenterIcon.getRestingAlpha(), animateIcons, slowAnimation, false); animateIcons, slowAnimation, false, forceNoCircleAnimation); mTranslation = translation; } Loading Loading @@ -431,16 +436,21 @@ public class KeyguardAffordanceHelper { public void animateHideLeftRightIcon() { cancelAnimation(); updateIcon(mRightIcon, 0f, 0f, true, false, false); updateIcon(mLeftIcon, 0f, 0f, true, false, false); updateIcon(mRightIcon, 0f, 0f, true, false, false, false); updateIcon(mLeftIcon, 0f, 0f, true, false, false, false); } private void updateIcon(KeyguardAffordanceView view, float circleRadius, float alpha, boolean animate, boolean slowRadiusAnimation, boolean force) { boolean animate, boolean slowRadiusAnimation, boolean force, boolean forceNoCircleAnimation) { if (view.getVisibility() != View.VISIBLE && !force) { return; } if (forceNoCircleAnimation) { view.setCircleRadiusWithoutAnimation(circleRadius); } else { view.setCircleRadius(circleRadius, slowRadiusAnimation); } updateIconAlpha(view, alpha, animate); } Loading Loading @@ -503,9 +513,37 @@ public class KeyguardAffordanceHelper { mMotionCancelled = true; if (mSwipingInProgress) { mCallback.onSwipingAborted(); } mSwipingInProgress = false; } } public boolean isSwipingInProgress() { return mSwipingInProgress; } public void launchAffordance(boolean animate, boolean left) { if (mSwipingInProgress) { // We don't want to mess with the state if the user is actually swiping already. return; } KeyguardAffordanceView targetView = left ? mLeftIcon : mRightIcon; KeyguardAffordanceView otherView = left ? mRightIcon : mLeftIcon; startSwiping(targetView); if (animate) { fling(0, false, !left); updateIcon(otherView, 0.0f, 0, true, false, true, false); updateIcon(mCenterIcon, 0.0f, 0, true, false, true, false); } else { mCallback.onAnimationToSideStarted(!left, mTranslation, 0); mTranslation = left ? mCallback.getMaxTranslationDistance() : mCallback.getMaxTranslationDistance(); updateIcon(mCenterIcon, 0.0f, 0.0f, false, false, true, false); updateIcon(otherView, 0.0f, 0.0f, false, false, true, false); targetView.instantFinishAnimation(); mFlingEndListener.onAnimationEnd(null); mAnimationEndRunnable.run(); } } public interface Callback { Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java +1 −1 Original line number Diff line number Diff line Loading @@ -80,7 +80,7 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL private static final Intent SECURE_CAMERA_INTENT = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE) .addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); private static final Intent INSECURE_CAMERA_INTENT = public static final Intent INSECURE_CAMERA_INTENT = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA); private static final Intent PHONE_INTENT = new Intent(Intent.ACTION_DIAL); private static final int DOZE_ANIMATION_STAGGER_DELAY = 48; Loading Loading
core/java/com/android/internal/statusbar/IStatusBar.aidl +5 −0 Original line number Diff line number Diff line Loading @@ -69,5 +69,10 @@ oneway interface IStatusBar void showAssistDisclosure(); void startAssist(in Bundle args); /** * Notifies the status bar that a camera launch gesture has been detected. */ void onCameraLaunchGestureDetected(); }
packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java +13 −0 Original line number Diff line number Diff line Loading @@ -64,6 +64,7 @@ public class CommandQueue extends IStatusBar.Stub { private static final int MSG_APP_TRANSITION_STARTING = 21 << MSG_SHIFT; private static final int MSG_ASSIST_DISCLOSURE = 22 << MSG_SHIFT; private static final int MSG_START_ASSIST = 23 << MSG_SHIFT; private static final int MSG_CAMERA_LAUNCH_GESTURE = 24 << MSG_SHIFT; public static final int FLAG_EXCLUDE_NONE = 0; public static final int FLAG_EXCLUDE_SEARCH_PANEL = 1 << 0; Loading Loading @@ -109,6 +110,7 @@ public class CommandQueue extends IStatusBar.Stub { public void appTransitionStarting(long startTime, long duration); public void showAssistDisclosure(); public void startAssist(Bundle args); public void onCameraLaunchGestureDetected(); } public CommandQueue(Callbacks callbacks, StatusBarIconList list) { Loading Loading @@ -293,6 +295,14 @@ public class CommandQueue extends IStatusBar.Stub { } } @Override public void onCameraLaunchGestureDetected() { synchronized (mList) { mHandler.removeMessages(MSG_CAMERA_LAUNCH_GESTURE); mHandler.obtainMessage(MSG_CAMERA_LAUNCH_GESTURE).sendToTarget(); } } private final class H extends Handler { public void handleMessage(Message msg) { final int what = msg.what & MSG_MASK; Loading Loading @@ -391,6 +401,9 @@ public class CommandQueue extends IStatusBar.Stub { case MSG_START_ASSIST: mCallbacks.startAssist((Bundle) msg.obj); break; case MSG_CAMERA_LAUNCH_GESTURE: mCallbacks.onCameraLaunchGestureDetected(); break; } } } Loading
packages/SystemUI/src/com/android/systemui/statusbar/KeyguardAffordanceView.java +46 −4 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import android.view.ViewAnimationUtils; import android.view.animation.AnimationUtils; import android.view.animation.Interpolator; import android.widget.ImageView; import com.android.systemui.R; import com.android.systemui.statusbar.phone.KeyguardAffordanceHelper; import com.android.systemui.statusbar.phone.PhoneStatusBar; Loading Loading @@ -79,6 +80,7 @@ public class KeyguardAffordanceView extends ImageView { private float mRestingAlpha = KeyguardAffordanceHelper.SWIPE_RESTING_ALPHA_AMOUNT; private boolean mSupportHardware; private boolean mFinishing; private boolean mLaunchingAffordance; private CanvasProperty<Float> mHwCircleRadius; private CanvasProperty<Float> mHwCenterX; Loading Loading @@ -152,7 +154,7 @@ public class KeyguardAffordanceView extends ImageView { @Override protected void onDraw(Canvas canvas) { mSupportHardware = canvas.isHardwareAccelerated(); mSupportHardware = false;//canvas.isHardwareAccelerated(); drawBackgroundCircle(canvas); canvas.save(); canvas.scale(mImageScale, mImageScale, getWidth() / 2, getHeight() / 2); Loading @@ -161,9 +163,11 @@ public class KeyguardAffordanceView extends ImageView { } public void setPreviewView(View v) { View oldPreviewView = mPreviewView; mPreviewView = v; if (mPreviewView != null) { mPreviewView.setVisibility(INVISIBLE); mPreviewView.setVisibility(mLaunchingAffordance ? oldPreviewView.getVisibility() : INVISIBLE); } } Loading @@ -176,7 +180,7 @@ public class KeyguardAffordanceView extends ImageView { } private void drawBackgroundCircle(Canvas canvas) { if (mCircleRadius > 0) { if (mCircleRadius > 0 || mFinishing) { if (mFinishing && mSupportHardware) { DisplayListCanvas displayListCanvas = (DisplayListCanvas) canvas; displayListCanvas.drawCircle(mHwCenterX, mHwCenterY, mHwCircleRadius, Loading Loading @@ -207,11 +211,12 @@ public class KeyguardAffordanceView extends ImageView { cancelAnimator(mPreviewClipper); mFinishing = true; mCircleStartRadius = mCircleRadius; float maxCircleSize = getMaxCircleSize(); final float maxCircleSize = getMaxCircleSize(); Animator animatorToRadius; if (mSupportHardware) { initHwProperties(); animatorToRadius = getRtAnimatorToRadius(maxCircleSize); startRtAlphaFadeIn(); } else { animatorToRadius = getAnimatorToRadius(maxCircleSize); } Loading @@ -222,6 +227,8 @@ public class KeyguardAffordanceView extends ImageView { public void onAnimationEnd(Animator animation) { mAnimationEndRunnable.run(); mFinishing = false; mCircleRadius = maxCircleSize; invalidate(); } }); animatorToRadius.start(); Loading @@ -241,6 +248,36 @@ public class KeyguardAffordanceView extends ImageView { } } /** * Fades in the Circle on the RenderThread. It's used when finishing the circle when it had * alpha 0 in the beginning. */ private void startRtAlphaFadeIn() { if (mCircleRadius == 0 && mPreviewView == null) { Paint modifiedPaint = new Paint(mCirclePaint); modifiedPaint.setColor(mCircleColor); modifiedPaint.setAlpha(0); mHwCirclePaint = CanvasProperty.createPaint(modifiedPaint); RenderNodeAnimator animator = new RenderNodeAnimator(mHwCirclePaint, RenderNodeAnimator.PAINT_ALPHA, 255); animator.setTarget(this); animator.setInterpolator(PhoneStatusBar.ALPHA_IN); animator.setDuration(250); animator.start(); } } public void instantFinishAnimation() { cancelAnimator(mPreviewClipper); if (mPreviewView != null) { mPreviewView.setClipBounds(null); mPreviewView.setVisibility(View.VISIBLE); } mCircleRadius = getMaxCircleSize(); setImageAlpha(0, false); invalidate(); } private void startRtCircleFadeOut(long duration) { RenderNodeAnimator animator = new RenderNodeAnimator(mHwCirclePaint, RenderNodeAnimator.PAINT_ALPHA, 0); Loading Loading @@ -443,6 +480,7 @@ public class KeyguardAffordanceView extends ImageView { public void setImageAlpha(float alpha, boolean animate, long duration, Interpolator interpolator, Runnable runnable) { cancelAnimator(mAlphaAnimator); alpha = mLaunchingAffordance ? 0 : alpha; int endAlpha = (int) (alpha * 255); final Drawable background = getBackground(); if (!animate) { Loading Loading @@ -509,4 +547,8 @@ public class KeyguardAffordanceView extends ImageView { return false; } } public void setLaunchingAffordance(boolean launchingAffordance) { mLaunchingAffordance = launchingAffordance; } }
packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardAffordanceHelper.java +61 −23 Original line number Diff line number Diff line Loading @@ -86,9 +86,9 @@ public class KeyguardAffordanceHelper { mContext = context; mCallback = callback; initIcons(); updateIcon(mLeftIcon, 0.0f, mLeftIcon.getRestingAlpha(), false, false, true); updateIcon(mCenterIcon, 0.0f, mCenterIcon.getRestingAlpha(), false, false, true); updateIcon(mRightIcon, 0.0f, mRightIcon.getRestingAlpha(), false, false, true); updateIcon(mLeftIcon, 0.0f, mLeftIcon.getRestingAlpha(), false, false, true, false); updateIcon(mCenterIcon, 0.0f, mCenterIcon.getRestingAlpha(), false, false, true, false); updateIcon(mRightIcon, 0.0f, mRightIcon.getRestingAlpha(), false, false, true, false); initDimens(); } Loading Loading @@ -144,9 +144,7 @@ public class KeyguardAffordanceHelper { } else { mTouchSlopExeeded = false; } mCallback.onSwipingStarted(targetView == mRightIcon); mSwipingInProgress = true; mTargetedView = targetView; startSwiping(targetView); mInitialTouchX = x; mInitialTouchY = y; mTranslationOnDown = mTranslation; Loading Loading @@ -192,6 +190,12 @@ public class KeyguardAffordanceHelper { return true; } private void startSwiping(View targetView) { mCallback.onSwipingStarted(targetView == mRightIcon); mSwipingInProgress = true; mTargetedView = targetView; } private View getIconAtPosition(float x, float y) { if (leftSwipePossible() && isOnIcon(mLeftIcon, x, y)) { return mLeftIcon; Loading Loading @@ -324,7 +328,7 @@ public class KeyguardAffordanceHelper { boolean velIsInWrongDirection = vel * mTranslation < 0; snapBack |= Math.abs(vel) > mMinFlingVelocity && velIsInWrongDirection; vel = snapBack ^ velIsInWrongDirection ? 0 : vel; fling(vel, snapBack || forceSnapBack); fling(vel, snapBack || forceSnapBack, mTranslation < 0); } private boolean isBelowFalsingThreshold() { Loading @@ -336,9 +340,8 @@ public class KeyguardAffordanceHelper { return (int) (mMinTranslationAmount * factor); } private void fling(float vel, final boolean snapBack) { float target = mTranslation < 0 ? -mCallback.getMaxTranslationDistance() private void fling(float vel, final boolean snapBack, boolean right) { float target = right ? -mCallback.getMaxTranslationDistance() : mCallback.getMaxTranslationDistance(); target = snapBack ? 0 : target; Loading @@ -352,8 +355,8 @@ public class KeyguardAffordanceHelper { }); animator.addListener(mFlingEndListener); if (!snapBack) { startFinishingCircleAnimation(vel * 0.375f, mAnimationEndRunnable); mCallback.onAnimationToSideStarted(mTranslation < 0, mTranslation, vel); startFinishingCircleAnimation(vel * 0.375f, mAnimationEndRunnable, right); mCallback.onAnimationToSideStarted(right, mTranslation, vel); } else { reset(true); } Loading @@ -364,8 +367,9 @@ public class KeyguardAffordanceHelper { } } private void startFinishingCircleAnimation(float velocity, Runnable mAnimationEndRunnable) { KeyguardAffordanceView targetView = mTranslation > 0 ? mLeftIcon : mRightIcon; private void startFinishingCircleAnimation(float velocity, Runnable mAnimationEndRunnable, boolean right) { KeyguardAffordanceView targetView = right ? mRightIcon : mLeftIcon; targetView.finishAnimation(velocity, mAnimationEndRunnable); } Loading @@ -383,19 +387,20 @@ public class KeyguardAffordanceHelper { fadeOutAlpha = Math.max(fadeOutAlpha, 0.0f); boolean animateIcons = isReset && animateReset; boolean forceNoCircleAnimation = isReset && !animateReset; float radius = getRadiusFromTranslation(absTranslation); boolean slowAnimation = isReset && isBelowFalsingThreshold(); if (!isReset) { updateIcon(targetView, radius, alpha + fadeOutAlpha * targetView.getRestingAlpha(), false, false, false); false, false, false, false); } else { updateIcon(targetView, 0.0f, fadeOutAlpha * targetView.getRestingAlpha(), animateIcons, slowAnimation, false); animateIcons, slowAnimation, false, forceNoCircleAnimation); } updateIcon(otherView, 0.0f, fadeOutAlpha * otherView.getRestingAlpha(), animateIcons, slowAnimation, false); animateIcons, slowAnimation, false, forceNoCircleAnimation); updateIcon(mCenterIcon, 0.0f, fadeOutAlpha * mCenterIcon.getRestingAlpha(), animateIcons, slowAnimation, false); animateIcons, slowAnimation, false, forceNoCircleAnimation); mTranslation = translation; } Loading Loading @@ -431,16 +436,21 @@ public class KeyguardAffordanceHelper { public void animateHideLeftRightIcon() { cancelAnimation(); updateIcon(mRightIcon, 0f, 0f, true, false, false); updateIcon(mLeftIcon, 0f, 0f, true, false, false); updateIcon(mRightIcon, 0f, 0f, true, false, false, false); updateIcon(mLeftIcon, 0f, 0f, true, false, false, false); } private void updateIcon(KeyguardAffordanceView view, float circleRadius, float alpha, boolean animate, boolean slowRadiusAnimation, boolean force) { boolean animate, boolean slowRadiusAnimation, boolean force, boolean forceNoCircleAnimation) { if (view.getVisibility() != View.VISIBLE && !force) { return; } if (forceNoCircleAnimation) { view.setCircleRadiusWithoutAnimation(circleRadius); } else { view.setCircleRadius(circleRadius, slowRadiusAnimation); } updateIconAlpha(view, alpha, animate); } Loading Loading @@ -503,9 +513,37 @@ public class KeyguardAffordanceHelper { mMotionCancelled = true; if (mSwipingInProgress) { mCallback.onSwipingAborted(); } mSwipingInProgress = false; } } public boolean isSwipingInProgress() { return mSwipingInProgress; } public void launchAffordance(boolean animate, boolean left) { if (mSwipingInProgress) { // We don't want to mess with the state if the user is actually swiping already. return; } KeyguardAffordanceView targetView = left ? mLeftIcon : mRightIcon; KeyguardAffordanceView otherView = left ? mRightIcon : mLeftIcon; startSwiping(targetView); if (animate) { fling(0, false, !left); updateIcon(otherView, 0.0f, 0, true, false, true, false); updateIcon(mCenterIcon, 0.0f, 0, true, false, true, false); } else { mCallback.onAnimationToSideStarted(!left, mTranslation, 0); mTranslation = left ? mCallback.getMaxTranslationDistance() : mCallback.getMaxTranslationDistance(); updateIcon(mCenterIcon, 0.0f, 0.0f, false, false, true, false); updateIcon(otherView, 0.0f, 0.0f, false, false, true, false); targetView.instantFinishAnimation(); mFlingEndListener.onAnimationEnd(null); mAnimationEndRunnable.run(); } } public interface Callback { Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java +1 −1 Original line number Diff line number Diff line Loading @@ -80,7 +80,7 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL private static final Intent SECURE_CAMERA_INTENT = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE) .addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); private static final Intent INSECURE_CAMERA_INTENT = public static final Intent INSECURE_CAMERA_INTENT = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA); private static final Intent PHONE_INTENT = new Intent(Intent.ACTION_DIAL); private static final int DOZE_ANIMATION_STAGGER_DELAY = 48; Loading