Skip to content

Commit c6e523e

Browse files
author
Jim Miller
committed
Fix 6486099: Fix clipping issues with MultiWaveView on phone/tablet
This fixes a problem where the bounds of the view weren't being calculated properly when a separate outer radius was specified. The code now takes the maximum of the ring drawable's width/height and that specified in the resource files. This gives it the best default look on all devices while still allowing minor tweaks. Change-Id: I5daa40ff4f14653c8cc89b39102816afb976e4f7
1 parent d83fdd0 commit c6e523e

File tree

9 files changed

+16
-21
lines changed

9 files changed

+16
-21
lines changed

core/java/com/android/internal/widget/multiwaveview/MultiWaveView.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -258,14 +258,14 @@ private void dump() {
258258
protected int getSuggestedMinimumWidth() {
259259
// View should be large enough to contain the background + handle and
260260
// target drawable on either edge.
261-
return mOuterRing.getWidth() + mMaxTargetWidth;
261+
return (int) (Math.max(mOuterRing.getWidth(), 2 * mOuterRadius) + mMaxTargetWidth);
262262
}
263263

264264
@Override
265265
protected int getSuggestedMinimumHeight() {
266266
// View should be large enough to contain the unlock ring + target and
267267
// target drawable on either edge
268-
return mOuterRing.getHeight() + mMaxTargetHeight;
268+
return (int) (Math.max(mOuterRing.getHeight(), 2 * mOuterRadius) + mMaxTargetHeight);
269269
}
270270

271271
private int resolveMeasured(int measureSpec, int desired)
@@ -941,10 +941,14 @@ protected void onLayout(boolean changed, int left, int top, int right, int botto
941941
super.onLayout(changed, left, top, right, bottom);
942942
final int width = right - left;
943943
final int height = bottom - top;
944+
// Target placement width/height. This puts the targets on the greater of the ring
945+
// width or the specified outer radius.
946+
final float placementWidth = Math.max(mOuterRing.getWidth(), 2 * mOuterRadius);
947+
final float placementHeight = Math.max(mOuterRing.getHeight(), 2 * mOuterRadius);
944948
float newWaveCenterX = mHorizontalOffset + mHorizontalInset
945-
+ Math.max(width, mMaxTargetWidth + mOuterRing.getWidth()) / 2;
949+
+ Math.max(width, mMaxTargetWidth + placementWidth) / 2;
946950
float newWaveCenterY = mVerticalOffset + mVerticalInset
947-
+ Math.max(height, + mMaxTargetHeight + mOuterRing.getHeight()) / 2;
951+
+ Math.max(height, + mMaxTargetHeight + placementHeight) / 2;
948952

949953
assignDefaultsIfNeeded(newWaveCenterX, newWaveCenterY);
950954

core/res/res/layout-sw600dp/keyguard_screen_tab_unlock.xml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
<!-- top: status -->
3232
<RelativeLayout
3333
android:layout_height="0dip"
34-
android:layout_weight="1"
34+
android:layout_weight="0.42"
3535
android:layout_width="match_parent"
3636
android:gravity="center">
3737

@@ -69,8 +69,9 @@
6969
<LinearLayout
7070
android:layout_width="match_parent"
7171
android:layout_height="0dip"
72-
android:layout_weight="1"
73-
android:orientation="vertical">
72+
android:layout_weight="0.58"
73+
android:orientation="vertical"
74+
android:gravity="bottom">
7475

7576
<TextView
7677
android:id="@+id/screenLocked"
@@ -87,7 +88,7 @@
8788
android:orientation="horizontal"
8889
android:layout_width="wrap_content"
8990
android:layout_height="wrap_content"
90-
android:layout_gravity="center"
91+
android:layout_gravity="center_horizontal"
9192
android:gravity="center"
9293

9394
android:targetDrawables="@array/lockscreen_targets_with_camera"

core/res/res/layout-sw600dp/keyguard_screen_tab_unlock_land.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
<!-- left side: status and music -->
3131
<RelativeLayout
3232
android:layout_height="match_parent"
33-
android:layout_weight="1"
33+
android:layout_weight="0.42"
3434
android:layout_width="0dip"
3535
android:gravity="center">
3636

@@ -67,7 +67,7 @@
6767
<!-- right side -->
6868
<RelativeLayout
6969
android:layout_height="match_parent"
70-
android:layout_weight="1"
70+
android:layout_weight="0.58"
7171
android:layout_width="0dip"
7272
android:gravity="center_horizontal|center_vertical">
7373

@@ -87,7 +87,7 @@
8787
android:layout_width="wrap_content"
8888
android:layout_height="wrap_content"
8989
android:layout_rowSpan="7"
90-
android:layout_gravity="center_vertical|center_horizontal"
90+
android:layout_gravity="center_vertical|right"
9191
android:gravity="center"
9292

9393
android:targetDrawables="@array/lockscreen_targets_with_camera"

packages/SystemUI/res/layout-land/status_bar_search_panel.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@
5252
prvandroid:directionDescriptions="@array/navbar_search_direction_descriptions"
5353
prvandroid:handleDrawable="@drawable/navbar_search_handle"
5454
prvandroid:waveDrawable="@drawable/navbar_search_outerring"
55-
prvandroid:outerRadius="@dimen/navbar_search_target_placement_radius"
5655
prvandroid:snapMargin="@dimen/navbar_search_snap_margin"
5756
prvandroid:hitRadius="@dimen/navbar_search_hit_radius"
5857
prvandroid:feedbackCount="0"

packages/SystemUI/res/layout-port/status_bar_search_panel.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@
5252
prvandroid:directionDescriptions="@array/navbar_search_direction_descriptions"
5353
prvandroid:handleDrawable="@drawable/navbar_search_handle"
5454
prvandroid:waveDrawable="@drawable/navbar_search_outerring"
55-
prvandroid:outerRadius="@dimen/navbar_search_target_placement_radius"
5655
prvandroid:snapMargin="@dimen/navbar_search_snap_margin"
5756
prvandroid:hitRadius="@dimen/navbar_search_hit_radius"
5857
prvandroid:feedbackCount="0"

packages/SystemUI/res/layout-sw600dp/status_bar_search_panel.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@
6161
prvandroid:directionDescriptions="@array/navbar_search_direction_descriptions"
6262
prvandroid:handleDrawable="@drawable/navbar_search_handle"
6363
prvandroid:waveDrawable="@drawable/navbar_search_outerring"
64-
prvandroid:outerRadius="@dimen/navbar_search_target_placement_radius"
6564
prvandroid:snapMargin="@dimen/navbar_search_snap_margin"
6665
prvandroid:hitRadius="@dimen/navbar_search_hit_radius"
6766
prvandroid:feedbackCount="0"

packages/SystemUI/res/layout-sw720dp/status_bar_search_panel.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@
6161
prvandroid:directionDescriptions="@array/navbar_search_direction_descriptions"
6262
prvandroid:handleDrawable="@drawable/navbar_search_handle"
6363
prvandroid:waveDrawable="@drawable/navbar_search_outerring"
64-
prvandroid:outerRadius="@dimen/navbar_search_target_placement_radius"
6564
prvandroid:snapMargin="@dimen/navbar_search_snap_margin"
6665
prvandroid:hitRadius="@dimen/navbar_search_hit_radius"
6766
prvandroid:feedbackCount="0"

packages/SystemUI/res/values-sw600dp/dimens.xml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,6 @@
2727
<!-- 0x33 = center_horizontal|top -->
2828
<integer name="notification_panel_layout_gravity">0x31</integer>
2929

30-
<!-- Default target placement radius for navigation bar search target -->
31-
<dimen name="navbar_search_target_placement_radius">182dip</dimen>
32-
3330
<!-- Diameter of outer shape drawable shown in navbar search-->
3431
<dimen name="navbar_search_outerring_diameter">364dp</dimen>
3532

packages/SystemUI/res/values/dimens.xml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,9 +105,6 @@
105105
<!-- The width of the view containing the menu status bar icon -->
106106
<dimen name="navigation_menu_key_width">40dip</dimen>
107107

108-
<!-- Default target placement radius for navigation bar search target -->
109-
<dimen name="navbar_search_target_placement_radius">150dip</dimen>
110-
111108
<!-- Default distance beyond which snaps to the target radius -->
112109
<dimen name="navbar_search_snap_margin">20dip</dimen>
113110

0 commit comments

Comments
 (0)