diff options
4 files changed, 42 insertions, 18 deletions
diff --git a/packages/SystemUI/res/layout/car_fullscreen_user_pod.xml b/packages/SystemUI/res/layout/car_fullscreen_user_pod.xml index bc290129f545..dde2db2f484f 100644 --- a/packages/SystemUI/res/layout/car_fullscreen_user_pod.xml +++ b/packages/SystemUI/res/layout/car_fullscreen_user_pod.xml @@ -20,10 +20,7 @@ android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginLeft="@dimen/car_fullscreen_user_pod_margin_side" - android:layout_marginRight="@dimen/car_fullscreen_user_pod_margin_side" - android:gravity="center" - android:layout_weight="1" > + android:gravity="center" > <ImageView android:id="@+id/user_avatar" android:layout_gravity="center" @@ -31,10 +28,13 @@ android:layout_height="@dimen/car_fullscreen_user_pod_image_avatar_height" /> <TextView android:id="@+id/user_name" - android:layout_width="wrap_content" + android:layout_width="@dimen/car_fullscreen_user_pod_width" android:layout_height="wrap_content" android:layout_marginTop="@dimen/car_fullscreen_user_pod_margin_above_text" android:textSize="@dimen/car_fullscreen_user_pod_text_size" android:textColor="@color/qs_user_detail_name" + android:ellipsize="end" + android:singleLine="true" + android:gravity="center_horizontal" android:layout_gravity="center_horizontal" /> </LinearLayout> diff --git a/packages/SystemUI/res/layout/car_fullscreen_user_pod_container.xml b/packages/SystemUI/res/layout/car_fullscreen_user_pod_container.xml index 8c556801cf9b..99d010f2ac2b 100644 --- a/packages/SystemUI/res/layout/car_fullscreen_user_pod_container.xml +++ b/packages/SystemUI/res/layout/car_fullscreen_user_pod_container.xml @@ -18,7 +18,8 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_gravity="center"> + android:gravity="center" + android:layout_gravity="center" > <!-- car_fullscreen_user_pods will be dynamically added here. --> </LinearLayout> diff --git a/packages/SystemUI/res/values/dimens_car.xml b/packages/SystemUI/res/values/dimens_car.xml index 89078f5272bf..5f56c4ea6f2d 100644 --- a/packages/SystemUI/res/values/dimens_car.xml +++ b/packages/SystemUI/res/values/dimens_car.xml @@ -18,11 +18,12 @@ <resources> <dimen name="car_margin">148dp</dimen> - <dimen name="car_fullscreen_user_pod_margin_side">44dp</dimen> <dimen name="car_fullscreen_user_pod_margin_above_text">24dp</dimen> + <dimen name="car_fullscreen_user_pod_margin_between">24dp</dimen> <dimen name="car_fullscreen_user_pod_icon_text_size">96dp</dimen> <dimen name="car_fullscreen_user_pod_image_avatar_width">192dp</dimen> <dimen name="car_fullscreen_user_pod_image_avatar_height">192dp</dimen> + <dimen name="car_fullscreen_user_pod_width">264dp</dimen> <dimen name="car_fullscreen_user_pod_text_size">40sp</dimen> <!-- B1 --> <dimen name="car_navigation_button_width">64dp</dimen> diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/car/UserGridView.java b/packages/SystemUI/src/com/android/systemui/statusbar/car/UserGridView.java index b22a2c1c0f22..f178aa634247 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/car/UserGridView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/car/UserGridView.java @@ -17,6 +17,7 @@ package com.android.systemui.statusbar.car; import android.content.Context; +import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; @@ -100,7 +101,9 @@ public class UserGridView extends ViewPager { */ private final class Adapter extends PagerAdapter implements View.OnLayoutChangeListener { private final int mPodWidth; - private final int mPodMargin; + private final int mPodMarginBetween; + private final int mPodImageAvatarWidth; + private final int mPodImageAvatarHeight; private final WrappedBaseUserAdapter mUserAdapter; private int mContainerWidth; @@ -108,10 +111,15 @@ public class UserGridView extends ViewPager { public Adapter(UserSwitcherController controller) { super(); mUserAdapter = new WrappedBaseUserAdapter(controller, this); - mPodWidth = getResources().getDimensionPixelSize( + + Resources res = getResources(); + mPodWidth = res.getDimensionPixelSize(R.dimen.car_fullscreen_user_pod_width); + mPodMarginBetween = res.getDimensionPixelSize( + R.dimen.car_fullscreen_user_pod_margin_between); + mPodImageAvatarWidth = res.getDimensionPixelSize( R.dimen.car_fullscreen_user_pod_image_avatar_width); - mPodMargin = getResources().getDimensionPixelSize( - R.dimen.car_fullscreen_user_pod_margin_side); + mPodImageAvatarHeight = res.getDimensionPixelSize( + R.dimen.car_fullscreen_user_pod_image_avatar_height); } @Override @@ -121,9 +129,12 @@ public class UserGridView extends ViewPager { private int getIconsPerPage() { // We need to know how many pods we need in this page. Each pod has its own width and - // margins on both sides. We can then divide the measured width of the parent by the + // a margin between them. We can then divide the measured width of the parent by the // sum of pod width and margin to get the number of pods that will completely fit. - return mContainerWidth / (mPodWidth + mPodMargin * 2); + // There is one less margin than the number of pods (eg. for 5 pods, there are 4 + // margins), so need to add the margin to the measured width to account for that. + return (mContainerWidth + mPodMarginBetween) / + (mPodWidth + mPodMarginBetween); } @Override @@ -137,7 +148,17 @@ public class UserGridView extends ViewPager { int iconsPerPage = getIconsPerPage(); int limit = Math.min(mUserAdapter.getCount(), (position + 1) * iconsPerPage); for (int i = position * iconsPerPage; i < limit; i++) { - pods.addView(makeUserPod(inflater, context, i, pods)); + View v = makeUserPod(inflater, context, i, pods); + pods.addView(v); + // This is hacky, but the dividers on the pod container LinearLayout don't seem + // to work for whatever reason. Instead, set a right margin on the pod if it's not + // the right-most pod and there is more than one pod in the container. + if (i < limit - 1 && limit > 1) { + LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( + LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); + params.setMargins(0, 0, mPodMarginBetween, 0); + v.setLayoutParams(params); + } } container.addView(pods); return pods; @@ -151,7 +172,8 @@ public class UserGridView extends ViewPager { */ private Bitmap getDefaultUserIcon(CharSequence userName) { CharSequence displayText = userName.subSequence(0, 1); - Bitmap out = Bitmap.createBitmap(mPodWidth, mPodWidth, Bitmap.Config.ARGB_8888); + Bitmap out = Bitmap.createBitmap(mPodImageAvatarWidth, mPodImageAvatarHeight, + Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(out); // Draw the circle background. @@ -159,7 +181,7 @@ public class UserGridView extends ViewPager { shape.setShape(GradientDrawable.RADIAL_GRADIENT); shape.setGradientRadius(1.0f); shape.setColor(getContext().getColor(R.color.car_user_switcher_no_user_image_bgcolor)); - shape.setBounds(0, 0, mPodWidth, mPodWidth); + shape.setBounds(0, 0, mPodImageAvatarWidth, mPodImageAvatarHeight); shape.draw(canvas); // Draw the letter in the center. @@ -174,8 +196,8 @@ public class UserGridView extends ViewPager { // correct this, half the difference between the top and bottom distance metrics of the // font gives the offset of the font. Bottom is a positive value, top is negative, so // the different is actually a sum. The "half" operation is then factored out. - canvas.drawText(displayText.toString(), - mPodWidth / 2, (mPodWidth - (metrics.bottom + metrics.top)) / 2, paint); + canvas.drawText(displayText.toString(), mPodImageAvatarWidth / 2, + (mPodImageAvatarHeight - (metrics.bottom + metrics.top)) / 2, paint); return out; } |