diff options
| author | Chris Wren <cwren@android.com> | 2012-11-02 10:06:00 -0700 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-11-02 10:06:00 -0700 |
| commit | febea58c9215c38fde2c89732b88c832ab69c143 (patch) | |
| tree | 97f93356e83164301a5379b41b4cb8b51ffe0a86 | |
| parent | cc5c168e33700c2398ca294e9039f7904cbec803 (diff) | |
| parent | 5f69f380ac84ccdc53462d20e2fb8a784a8dc31b (diff) | |
| download | frameworks_base-febea58c9215c38fde2c89732b88c832ab69c143.zip frameworks_base-febea58c9215c38fde2c89732b88c832ab69c143.tar.gz frameworks_base-febea58c9215c38fde2c89732b88c832ab69c143.tar.bz2 | |
Merge "hide multiuser selector when IME is up." into jb-mr1-lockscreen-dev
| -rw-r--r-- | core/res/res/values-land/dimens.xml | 5 | ||||
| -rw-r--r-- | core/res/res/values/dimens.xml | 5 | ||||
| -rw-r--r-- | core/res/res/values/symbols.xml | 1 | ||||
| -rw-r--r-- | policy/src/com/android/internal/policy/impl/keyguard/MultiPaneChallengeLayout.java | 53 |
4 files changed, 42 insertions, 22 deletions
diff --git a/core/res/res/values-land/dimens.xml b/core/res/res/values-land/dimens.xml index 36f2628..8f1bd9a 100644 --- a/core/res/res/values-land/dimens.xml +++ b/core/res/res/values-land/dimens.xml @@ -56,4 +56,9 @@ <!-- Bottom padding for the widget pager --> <dimen name="kg_widget_pager_bottom_padding">0dp</dimen> + <!-- If the height if keyguard drops below this threshold (most likely + due to the appearance of the IME), then drop the multiuser selector. + Landscape's layout allows this to be smaller than for portrait. --> + <dimen name="kg_squashed_layout_threshold">400dp</dimen> + </resources> diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml index 4966b97..3a24cc1 100644 --- a/core/res/res/values/dimens.xml +++ b/core/res/res/values/dimens.xml @@ -330,4 +330,9 @@ <!-- Size of the region along the edge of the screen that will accept swipes to scroll the widget area. --> <dimen name="kg_edge_swipe_region_size">24dp</dimen> + + <!-- If the height if keyguard drops below this threshold (most likely + due to the appearance of the IME), then drop the multiuser selector. --> + <dimen name="kg_squashed_layout_threshold">600dp</dimen> + </resources> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 7299999..adf53a9 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -1234,6 +1234,7 @@ <java-symbol type="dimen" name="keyguard_avatar_frame_stroke_width" /> <java-symbol type="dimen" name="keyguard_avatar_frame_shadow_radius" /> <java-symbol type="dimen" name="kg_edge_swipe_region_size" /> + <java-symbol type="dimen" name="kg_squashed_layout_threshold" /> <java-symbol type="drawable" name="ic_jog_dial_sound_off" /> <java-symbol type="drawable" name="ic_jog_dial_sound_on" /> <java-symbol type="drawable" name="ic_jog_dial_unlock" /> diff --git a/policy/src/com/android/internal/policy/impl/keyguard/MultiPaneChallengeLayout.java b/policy/src/com/android/internal/policy/impl/keyguard/MultiPaneChallengeLayout.java index b38eb28..3bc39eb 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/MultiPaneChallengeLayout.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/MultiPaneChallengeLayout.java @@ -47,6 +47,7 @@ public class MultiPaneChallengeLayout extends ViewGroup implements ChallengeLayo private OnBouncerStateChangedListener mBouncerListener; private final Rect mTempRect = new Rect(); + private final Context mContext; private final OnClickListener mScrimClickListener = new OnClickListener() { @Override @@ -66,6 +67,8 @@ public class MultiPaneChallengeLayout extends ViewGroup implements ChallengeLayo public MultiPaneChallengeLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); + mContext = context; + final TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MultiPaneChallengeLayout, defStyleAttr, 0); mOrientation = a.getInt(R.styleable.MultiPaneChallengeLayout_orientation, @@ -173,6 +176,8 @@ public class MultiPaneChallengeLayout extends ViewGroup implements ChallengeLayo throw new IllegalArgumentException( "MultiPaneChallengeLayout must be measured with an exact size"); } + float squashedLayoutThreshold = + mContext.getResources().getDimension(R.dimen.kg_squashed_layout_threshold); final int width = MeasureSpec.getSize(widthSpec); final int height = MeasureSpec.getSize(heightSpec); @@ -208,28 +213,32 @@ public class MultiPaneChallengeLayout extends ViewGroup implements ChallengeLayo mUserSwitcherView = child; if (child.getVisibility() == GONE) continue; - - int adjustedWidthSpec = widthSpec; - int adjustedHeightSpec = heightSpec; - if (lp.maxWidth >= 0) { - adjustedWidthSpec = MeasureSpec.makeMeasureSpec( - Math.min(lp.maxWidth, MeasureSpec.getSize(widthSpec)), - MeasureSpec.EXACTLY); - } - if (lp.maxHeight >= 0) { - adjustedHeightSpec = MeasureSpec.makeMeasureSpec( - Math.min(lp.maxHeight, MeasureSpec.getSize(heightSpec)), - MeasureSpec.EXACTLY); - } - // measureChildWithMargins will resolve layout direction for the LayoutParams - measureChildWithMargins(child, adjustedWidthSpec, 0, adjustedHeightSpec, 0); - - // Only subtract out space from one dimension. Favor vertical. - // Offset by 1.5x to add some balance along the other edge. - if (Gravity.isVertical(lp.gravity)) { - heightUsed += child.getMeasuredHeight() * 1.5f; - } else if (Gravity.isHorizontal(lp.gravity)) { - widthUsed += child.getMeasuredWidth() * 1.5f; + if (height < squashedLayoutThreshold) { + int zero = MeasureSpec.makeMeasureSpec(0, MeasureSpec.EXACTLY); + measureChild(child, zero, zero); + } else { + int adjustedWidthSpec = widthSpec; + int adjustedHeightSpec = heightSpec; + if (lp.maxWidth >= 0) { + adjustedWidthSpec = MeasureSpec.makeMeasureSpec( + Math.min(lp.maxWidth, MeasureSpec.getSize(widthSpec)), + MeasureSpec.EXACTLY); + } + if (lp.maxHeight >= 0) { + adjustedHeightSpec = MeasureSpec.makeMeasureSpec( + Math.min(lp.maxHeight, MeasureSpec.getSize(heightSpec)), + MeasureSpec.EXACTLY); + } + // measureChildWithMargins will resolve layout direction for the LayoutParams + measureChildWithMargins(child, adjustedWidthSpec, 0, adjustedHeightSpec, 0); + + // Only subtract out space from one dimension. Favor vertical. + // Offset by 1.5x to add some balance along the other edge. + if (Gravity.isVertical(lp.gravity)) { + heightUsed += child.getMeasuredHeight() * 1.5f; + } else if (Gravity.isHorizontal(lp.gravity)) { + widthUsed += child.getMeasuredWidth() * 1.5f; + } } } else if (lp.childType == LayoutParams.CHILD_TYPE_SCRIM) { setScrimView(child); |
