From 52b85e4fa2f56e9f1562d7a93ca1a33a3d409015 Mon Sep 17 00:00:00 2001 From: Maurice Lam Date: Fri, 21 Apr 2017 14:19:58 -0700 Subject: [PATCH] Polish UX of expandable switch - Padding from the expandable arrow is now 4dp - Arrow is pushed down 2.5dp (by modifying the drawable) to align with the text - Switch and the switch divider is now fixed 36dp from top rather than vertically aligned Bug: 37576453 Test: ./gradlew connectedAndroidTest test Change-Id: Ibb3028d3bb17ca9d054911e4ff27098a200af0da --- .../res/drawable/suw_ic_expand_less.xml | 12 ++-- .../res/drawable/suw_ic_expand_more.xml | 10 +-- .../layout/suw_items_expandable_switch.xml | 7 +- library/gingerbread/res/values/dimens.xml | 4 +- .../util/DimensionConsistencyTest.java | 69 +++++++++++++++++++ 5 files changed, 90 insertions(+), 12 deletions(-) create mode 100644 library/gingerbread/test/robotest/src/com/android/setupwizardlib/util/DimensionConsistencyTest.java diff --git a/library/gingerbread/res/drawable/suw_ic_expand_less.xml b/library/gingerbread/res/drawable/suw_ic_expand_less.xml index e639a61..ef717c1 100644 --- a/library/gingerbread/res/drawable/suw_ic_expand_less.xml +++ b/library/gingerbread/res/drawable/suw_ic_expand_less.xml @@ -16,11 +16,13 @@ --> + android:width="20dp" + android:height="24dp" + android:viewportWidth="20.0" + android:viewportHeight="24.0"> + + android:pathData="M10,9.17l-5,5 1.18,1.18L10,11.53l3.83,3.82L15,14.17z" /> + diff --git a/library/gingerbread/res/drawable/suw_ic_expand_more.xml b/library/gingerbread/res/drawable/suw_ic_expand_more.xml index ed63e21..ff3a0c5 100644 --- a/library/gingerbread/res/drawable/suw_ic_expand_more.xml +++ b/library/gingerbread/res/drawable/suw_ic_expand_more.xml @@ -16,11 +16,13 @@ --> + + android:pathData="M13.83,9.66L10,13.48 6.18,9.66 5,10.83l5,5 5,-5z"/> + diff --git a/library/gingerbread/res/layout/suw_items_expandable_switch.xml b/library/gingerbread/res/layout/suw_items_expandable_switch.xml index 91e482d..2b98a9f 100644 --- a/library/gingerbread/res/layout/suw_items_expandable_switch.xml +++ b/library/gingerbread/res/layout/suw_items_expandable_switch.xml @@ -94,7 +94,8 @@ android:id="@+id/suw_items_switch_divider" android:layout_width="1dp" android:layout_height="@dimen/suw_switch_divider_height" - android:layout_gravity="center_vertical" + android:layout_gravity="top" + android:layout_marginTop="@dimen/suw_switch_divider_padding_top" android:background="?android:attr/listDivider" /> + android:layout_gravity="top" + android:gravity="top" + android:paddingTop="@dimen/suw_switch_padding_top" /> diff --git a/library/gingerbread/res/values/dimens.xml b/library/gingerbread/res/values/dimens.xml index d40d7de..d06673f 100644 --- a/library/gingerbread/res/values/dimens.xml +++ b/library/gingerbread/res/values/dimens.xml @@ -20,10 +20,12 @@ 16dp 0dp + 39dp 32dp + 36dp 16dp - 6dp + 4dp diff --git a/library/gingerbread/test/robotest/src/com/android/setupwizardlib/util/DimensionConsistencyTest.java b/library/gingerbread/test/robotest/src/com/android/setupwizardlib/util/DimensionConsistencyTest.java new file mode 100644 index 0000000..43e7f03 --- /dev/null +++ b/library/gingerbread/test/robotest/src/com/android/setupwizardlib/util/DimensionConsistencyTest.java @@ -0,0 +1,69 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.setupwizardlib.util; + +import static org.junit.Assert.assertEquals; +import static org.robolectric.RuntimeEnvironment.application; + +import android.content.Context; +import android.content.res.Resources; +import android.util.DisplayMetrics; +import android.util.TypedValue; +import android.view.ContextThemeWrapper; + +import com.android.setupwizardlib.BuildConfig; +import com.android.setupwizardlib.R; +import com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.annotation.Config; + +@RunWith(SuwLibRobolectricTestRunner.class) +@Config(constants = BuildConfig.class, sdk = Config.ALL_SDKS) +public class DimensionConsistencyTest { + + // Visual height of the framework switch widget + private static final int SWTICH_HEIGHT_DP = 26; + + private Context mContext; + + @Before + public void setUp() { + mContext = new ContextThemeWrapper(application, R.style.SuwThemeGlif_Light); + } + + @Test + public void testSwitchPaddingTop() { + final Resources res = mContext.getResources(); + + assertEquals( + "Switch and divider should be aligned at center vertically: " + + "suw_switch_padding_top + SWITCH_HEIGHT / 2 = " + + "suw_switch_divider_padding_top + suw_switch_divider_height / 2", + res.getDimensionPixelSize(R.dimen.suw_switch_divider_padding_top) + + (res.getDimensionPixelSize(R.dimen.suw_switch_divider_height) / 2), + res.getDimensionPixelSize(R.dimen.suw_switch_padding_top) + + (dp2Px(SWTICH_HEIGHT_DP) / 2)); + } + + private int dp2Px(float dp) { + DisplayMetrics displayMetrics = mContext.getResources().getDisplayMetrics(); + return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, displayMetrics); + } +}