diff options
| author | 2012-10-24 13:18:38 -0700 | |
|---|---|---|
| committer | 2012-10-24 13:18:39 -0700 | |
| commit | a9f166695b92e91ea6bb13a41f3aa1fb3f6ee77c (patch) | |
| tree | a906d5ebff8d52333ab9d6056eee19886c58ea2d | |
| parent | ff8722574ee335453845c3dc04435a20dc94a99b (diff) | |
| parent | 6fb841fa219eaae3e87f2fdc05e105d7a1813c42 (diff) | |
Merge "Fading side pages as per mock" into jb-mr1-lockscreen-dev
14 files changed, 181 insertions, 17 deletions
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardAccountView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardAccountView.java index ebca4acd0eac..ea7a8e7e30e1 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardAccountView.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardAccountView.java @@ -321,5 +321,9 @@ public class KeyguardAccountView extends LinearLayout implements KeyguardSecurit mSecurityMessageDisplay = display; reset(); } + + @Override + public void showUsabilityHint() { + } } diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardFaceUnlockView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardFaceUnlockView.java index c82a7364eb19..4aa6b05dc7b8 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardFaceUnlockView.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardFaceUnlockView.java @@ -218,4 +218,8 @@ public class KeyguardFaceUnlockView extends LinearLayout implements KeyguardSecu public void setSecurityMessageDisplay(SecurityMessageDisplay display) { mSecurityMessageDisplay = display; } + + @Override + public void showUsabilityHint() { + } } diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java index 49973b3ea46b..b106b9c2e5db 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java @@ -74,7 +74,7 @@ public class KeyguardHostView extends KeyguardViewBase { private AppWidgetHost mAppWidgetHost; private KeyguardWidgetPager mAppWidgetContainer; - private ViewFlipper mSecurityViewContainer; + private KeyguardSecurityViewFlipper mSecurityViewContainer; private KeyguardSelectorView mKeyguardSelectorView; private KeyguardTransportControlView mTransportControl; private boolean mEnableMenuKey; @@ -175,10 +175,11 @@ public class KeyguardHostView extends KeyguardViewBase { mViewStateManager.setPagedView(mAppWidgetContainer); mViewStateManager.setChallengeLayout(slider != null ? slider : (ChallengeLayout) findViewById(R.id.multi_pane_challenge)); - - mSecurityViewContainer = (ViewFlipper) findViewById(R.id.view_flipper); + mSecurityViewContainer = (KeyguardSecurityViewFlipper) findViewById(R.id.view_flipper); mKeyguardSelectorView = (KeyguardSelectorView) findViewById(R.id.keyguard_selector_view); + mViewStateManager.setSecurityViewContainer(mSecurityViewContainer); + mViewStateManager.showUsabilityHints(); updateSecurityViews(); if (!(mContext instanceof Activity)) { @@ -717,6 +718,10 @@ public class KeyguardHostView extends KeyguardViewBase { // layout is blank but forcing a layout causes it to reappear (e.g. with with // hierarchyviewer). requestLayout(); + + if (mViewStateManager != null) { + mViewStateManager.showUsabilityHints(); + } } @Override @@ -1069,7 +1074,7 @@ public class KeyguardHostView extends KeyguardViewBase { @Override public void showUnlockHint() { if (mKeyguardSelectorView != null) { - mKeyguardSelectorView.ping(); + mKeyguardSelectorView.showUsabilityHint(); } } diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPINView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPINView.java index 096fcb6e9bf0..1d0f61694359 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPINView.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPINView.java @@ -113,5 +113,9 @@ public class KeyguardPINView extends KeyguardAbsKeyInputView mPasswordEntry.requestFocus(); } + + @Override + public void showUsabilityHint() { + } } diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPasswordView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPasswordView.java index 635cadcf08c3..bc5b2d9ccdbd 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPasswordView.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPasswordView.java @@ -233,5 +233,9 @@ public class KeyguardPasswordView extends KeyguardAbsKeyInputView // input method subtype (The current IME should be LatinIME.) || imm.getEnabledInputMethodSubtypeList(null, false).size() > 1; } + + @Override + public void showUsabilityHint() { + } } diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPatternView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPatternView.java index dcf40bf966d0..408a9c8c22af 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPatternView.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPatternView.java @@ -200,6 +200,10 @@ public class KeyguardPatternView extends LinearLayout implements KeyguardSecurit } + @Override + public void showUsabilityHint() { + } + /** TODO: hook this up */ public void cleanUp() { if (DEBUG) Log.v(TAG, "Cleanup() called on " + this); diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSecurityView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSecurityView.java index 19bcae9466d2..c3684c4ab9ef 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSecurityView.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSecurityView.java @@ -62,4 +62,6 @@ public interface KeyguardSecurityView { KeyguardSecurityCallback getCallback(); void setSecurityMessageDisplay(SecurityMessageDisplay display); + + void showUsabilityHint(); } diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSecurityViewFlipper.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSecurityViewFlipper.java index c4e1607f4cdd..4fa071c254c3 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSecurityViewFlipper.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSecurityViewFlipper.java @@ -21,14 +21,17 @@ import android.graphics.Rect; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; +import android.view.WindowManager; import android.widget.ViewFlipper; +import com.android.internal.widget.LockPatternUtils; + /** * Subclass of the current view flipper that allows us to overload dispatchTouchEvent() so * we can emulate {@link WindowManager.LayoutParams#FLAG_SLIPPERY} within a view hierarchy. * */ -public class KeyguardSecurityViewFlipper extends ViewFlipper { +public class KeyguardSecurityViewFlipper extends ViewFlipper implements KeyguardSecurityView { private Rect mTempRect = new Rect(); public KeyguardSecurityViewFlipper(Context context) { @@ -55,4 +58,53 @@ public class KeyguardSecurityViewFlipper extends ViewFlipper { return result; } + KeyguardSecurityView getSecurityView() { + View child = getChildAt(getDisplayedChild()); + if (child instanceof KeyguardSecurityView) { + return (KeyguardSecurityView) child; + } + return null; + } + + @Override + public void setKeyguardCallback(KeyguardSecurityCallback callback) { + } + + @Override + public void setLockPatternUtils(LockPatternUtils utils) { + } + + @Override + public void reset() { + } + + @Override + public void onPause() { + } + + @Override + public void onResume() { + } + + @Override + public boolean needsInput() { + return false; + } + + @Override + public KeyguardSecurityCallback getCallback() { + return null; + } + + @Override + public void setSecurityMessageDisplay(SecurityMessageDisplay display) { + } + + @Override + public void showUsabilityHint() { + KeyguardSecurityView ksv = getSecurityView(); + if (ksv != null) { + ksv.showUsabilityHint(); + } + } } diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSelectorView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSelectorView.java index 1d26def19693..53f4de8137dc 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSelectorView.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSelectorView.java @@ -183,7 +183,8 @@ public class KeyguardSelectorView extends LinearLayout implements KeyguardSecuri return mGlowPadView.getTargetPosition(resId) != -1; } - public void ping() { + @Override + public void showUsabilityHint() { mGlowPadView.ping(); } diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSimPinView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSimPinView.java index 7878e461313a..018a1aa752e0 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSimPinView.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSimPinView.java @@ -121,6 +121,10 @@ public class KeyguardSimPinView extends LinearLayout mPinEntry.requestFocus(); } + @Override + public void showUsabilityHint() { + } + /** {@inheritDoc} */ public void cleanUp() { // dismiss the dialog. diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSimPukView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSimPukView.java index 320cdc8c597f..d0585b99f6ea 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSimPukView.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSimPukView.java @@ -170,6 +170,10 @@ public class KeyguardSimPukView extends LinearLayout implements View.OnClickList reset(); } + @Override + public void showUsabilityHint() { + } + /** {@inheritDoc} */ public void cleanUp() { // dismiss the dialog. diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewStateManager.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewStateManager.java index 61f126da646c..4f9c1a3e4aa0 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewStateManager.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewStateManager.java @@ -15,6 +15,8 @@ */ package com.android.internal.policy.impl.keyguard; +import android.os.Handler; +import android.os.Looper; import android.view.View; public class KeyguardViewStateManager implements SlidingChallengeLayout.OnChallengeScrolledListener { @@ -22,7 +24,11 @@ public class KeyguardViewStateManager implements SlidingChallengeLayout.OnChalle private KeyguardWidgetPager mPagedView; private int mCurrentPageIndex; private ChallengeLayout mChallengeLayout; + private Runnable mHideHintsRunnable; + private KeyguardSecurityView mKeyguardSecurityContainer; private int[] mTmpPoint = new int[2]; + private static final int SCREEN_ON_HINT_DURATION = 1000; + Handler mMainQueue = new Handler(Looper.myLooper()); int mChallengeTop = 0; @@ -37,10 +43,18 @@ public class KeyguardViewStateManager implements SlidingChallengeLayout.OnChalle mChallengeLayout = layout; } + public void setSecurityViewContainer(KeyguardSecurityView container) { + mKeyguardSecurityContainer = container; + } + public void onPageBeginMoving() { if (mChallengeLayout.isChallengeShowing()) { mChallengeLayout.showChallenge(false); } + if (mHideHintsRunnable != null) { + mMainQueue.removeCallbacks(mHideHintsRunnable); + mHideHintsRunnable = null; + } } public void onPageEndMoving() { @@ -123,6 +137,20 @@ public class KeyguardViewStateManager implements SlidingChallengeLayout.OnChalle } } + public void showUsabilityHints() { + mKeyguardSecurityContainer.showUsabilityHint(); + mPagedView.showInitialPageHints(); + mHideHintsRunnable = new Runnable() { + @Override + public void run() { + mPagedView.hideOutlinesAndSidePages(); + mHideHintsRunnable = null; + } + }; + + mMainQueue.postDelayed(mHideHintsRunnable, SCREEN_ON_HINT_DURATION); + } + @Override public void onScrollPositionChanged(float scrollPosition, int challengeTop) { mChallengeTop = challengeTop; diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetFrame.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetFrame.java index e38a445822fd..69ea6d57060b 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetFrame.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetFrame.java @@ -52,7 +52,7 @@ public class KeyguardWidgetFrame extends FrameLayout { private CheckLongPressHelper mLongPressHelper; private float mBackgroundAlpha; - private float mBackgroundAlphaMultiplier; + private float mBackgroundAlphaMultiplier = 1.0f; private Drawable mBackgroundDrawable; private Rect mBackgroundRect = new Rect(); @@ -207,6 +207,13 @@ public class KeyguardWidgetFrame extends FrameLayout { } } + public void setContentAlpha(float alpha) { + View content = getContent(); + if (content != null) { + content.setAlpha(alpha); + } + } + /** * Depending on whether the security is up, the widget size needs to change * diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetPager.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetPager.java index fa8e04b70a20..868b86712fbb 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetPager.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetPager.java @@ -16,6 +16,7 @@ package com.android.internal.policy.impl.keyguard; import android.animation.ObjectAnimator; +import android.animation.PropertyValuesHolder; import android.animation.TimeInterpolator; import android.appwidget.AppWidgetHostView; import android.content.Context; @@ -51,6 +52,7 @@ public class KeyguardWidgetPager extends PagedView implements PagedView.PageSwit private ObjectAnimator mChildrenOutlineFadeInAnimation; private ObjectAnimator mChildrenOutlineFadeOutAnimation; private float mChildrenOutlineAlpha = 0; + private float mSidePagesAlpha = 1f; private static final long CUSTOM_WIDGET_USER_ACTIVITY_TIMEOUT = 30000; private static final boolean CAFETERIA_TRAY = false; @@ -235,7 +237,7 @@ public class KeyguardWidgetPager extends PagedView implements PagedView.PageSwit if (mViewStateManager != null) { mViewStateManager.onPageBeginMoving(); } - showOutlines(); + showOutlinesAndSidePages(); } @Override @@ -249,7 +251,7 @@ public class KeyguardWidgetPager extends PagedView implements PagedView.PageSwit if (mViewStateManager != null) { mViewStateManager.onPageEndMoving(); } - hideOutlines(); + hideOutlinesAndSidePages(); } /* @@ -400,29 +402,50 @@ public class KeyguardWidgetPager extends PagedView implements PagedView.PageSwit protected void onStartReordering() { super.onStartReordering(); setChildrenOutlineMultiplier(1.0f); - showOutlines(); + showOutlinesAndSidePages(); } @Override protected void onEndReordering() { super.onEndReordering(); - hideOutlines(); + hideOutlinesAndSidePages(); } - void showOutlines() { + void showOutlinesAndSidePages() { if (mChildrenOutlineFadeOutAnimation != null) mChildrenOutlineFadeOutAnimation.cancel(); if (mChildrenOutlineFadeInAnimation != null) mChildrenOutlineFadeInAnimation.cancel(); - mChildrenOutlineFadeInAnimation = ObjectAnimator.ofFloat(this, - "childrenOutlineAlpha", 1.0f); + + PropertyValuesHolder outlinesAlpha = + PropertyValuesHolder.ofFloat("childrenOutlineAlpha", 1.0f); + PropertyValuesHolder sidePagesAlpha = PropertyValuesHolder.ofFloat("sidePagesAlpha", 1.0f); + mChildrenOutlineFadeInAnimation = + ObjectAnimator.ofPropertyValuesHolder(this, outlinesAlpha, sidePagesAlpha); + mChildrenOutlineFadeInAnimation.setDuration(CHILDREN_OUTLINE_FADE_IN_DURATION); mChildrenOutlineFadeInAnimation.start(); } - void hideOutlines() { + public void showInitialPageHints() { + // We start with everything showing + setChildrenOutlineAlpha(1.0f); + setSidePagesAlpha(1.0f); + setChildrenOutlineMultiplier(1.0f); + + int currPage = getCurrentPage(); + KeyguardWidgetFrame frame = getWidgetPageAt(currPage); + frame.setBackgroundAlphaMultiplier(0f); + } + + void hideOutlinesAndSidePages() { if (mChildrenOutlineFadeInAnimation != null) mChildrenOutlineFadeInAnimation.cancel(); if (mChildrenOutlineFadeOutAnimation != null) mChildrenOutlineFadeOutAnimation.cancel(); - mChildrenOutlineFadeOutAnimation = ObjectAnimator.ofFloat(this, - "childrenOutlineAlpha", 0.0f); + + PropertyValuesHolder outlinesAlpha = + PropertyValuesHolder.ofFloat("childrenOutlineAlpha", 0f); + PropertyValuesHolder sidePagesAlpha = PropertyValuesHolder.ofFloat("sidePagesAlpha", 0f); + mChildrenOutlineFadeOutAnimation = + ObjectAnimator.ofPropertyValuesHolder(this, outlinesAlpha, sidePagesAlpha); + mChildrenOutlineFadeOutAnimation.setDuration(CHILDREN_OUTLINE_FADE_OUT_DURATION); mChildrenOutlineFadeOutAnimation.setStartDelay(CHILDREN_OUTLINE_FADE_OUT_DELAY); mChildrenOutlineFadeOutAnimation.start(); @@ -435,6 +458,20 @@ public class KeyguardWidgetPager extends PagedView implements PagedView.PageSwit } } + public void setSidePagesAlpha(float alpha) { + // This gives the current page, or the destination page if in transit. + int curPage = getNextPage(); + mSidePagesAlpha = alpha; + for (int i = 0; i < getChildCount(); i++) { + if (curPage != i) { + getWidgetPageAt(i).setContentAlpha(alpha); + } else { + // We lock the current page alpha to 1. + getWidgetPageAt(i).setContentAlpha(1.0f); + } + } + } + public void setChildrenOutlineMultiplier(float alpha) { mChildrenOutlineAlpha = alpha; for (int i = 0; i < getChildCount(); i++) { @@ -442,6 +479,10 @@ public class KeyguardWidgetPager extends PagedView implements PagedView.PageSwit } } + public float getSidePagesAlpha() { + return mSidePagesAlpha; + } + public float getChildrenOutlineAlpha() { return mChildrenOutlineAlpha; } |