summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardAccountView.java4
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardFaceUnlockView.java4
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java13
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardPINView.java4
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardPasswordView.java4
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardPatternView.java4
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardSecurityView.java2
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardSecurityViewFlipper.java54
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardSelectorView.java3
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardSimPinView.java4
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardSimPukView.java4
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewStateManager.java28
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetFrame.java9
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetPager.java61
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;
}