diff options
author | Winson Chung <winsonc@google.com> | 2015-03-16 23:46:55 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-03-16 23:48:34 +0000 |
commit | 979853943c7d10b85daf9effa453c5bd54635904 (patch) | |
tree | 4b51a20d95c122b50c1263dc5a2e9414a482b36d | |
parent | 2bbbd746d22388b994079361c77ff5cdeedd5f3a (diff) | |
parent | aa2ab254ea6b59dfe4183015e76c31262036282d (diff) | |
download | android_packages_apps_Trebuchet-979853943c7d10b85daf9effa453c5bd54635904.tar.gz android_packages_apps_Trebuchet-979853943c7d10b85daf9effa453c5bd54635904.tar.bz2 android_packages_apps_Trebuchet-979853943c7d10b85daf9effa453c5bd54635904.zip |
Merge "Tweaking the apps list fast scroller." into ub-launcher3-burnaby
-rw-r--r-- | res/drawable/apps_list_bg.xml | 9 | ||||
-rw-r--r-- | res/drawable/apps_list_bg_inset.xml | 23 | ||||
-rw-r--r-- | res/drawable/apps_list_fastscroll_bg.xml | 9 | ||||
-rw-r--r-- | res/drawable/apps_list_scrollbar_thumb.xml | 2 | ||||
-rw-r--r-- | res/drawable/apps_reveal_bg.xml | 20 | ||||
-rw-r--r-- | res/drawable/apps_reveal_bg_inset.xml | 21 | ||||
-rw-r--r-- | res/layout-sw600dp/apps_view.xml | 1 | ||||
-rw-r--r-- | res/layout/apps_list_view.xml | 7 | ||||
-rw-r--r-- | res/layout/apps_reveal_view.xml | 2 | ||||
-rw-r--r-- | res/layout/apps_view.xml | 16 | ||||
-rw-r--r-- | res/values/dimens.xml | 6 | ||||
-rw-r--r-- | src/com/android/launcher3/AppsContainerRecyclerView.java | 4 | ||||
-rw-r--r-- | src/com/android/launcher3/AppsContainerView.java | 15 | ||||
-rw-r--r-- | src/com/android/launcher3/AppsGridAdapter.java | 9 |
14 files changed, 114 insertions, 30 deletions
diff --git a/res/drawable/apps_list_bg.xml b/res/drawable/apps_list_bg.xml index 61f1c083a..64177c16b 100644 --- a/res/drawable/apps_list_bg.xml +++ b/res/drawable/apps_list_bg.xml @@ -14,8 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. --> -<shape xmlns:android="http://schemas.android.com/apk/res/android" - android:shape="rectangle"> - <solid android:color="#ffffff" /> - <corners android:radius="3dp" /> -</shape>
\ No newline at end of file +<inset xmlns:android="http://schemas.android.com/apk/res/android" + android:drawable="@drawable/apps_list_bg_inset" + android:insetLeft="@dimen/apps_container_inset" + android:insetRight="@dimen/apps_container_inset" />
\ No newline at end of file diff --git a/res/drawable/apps_list_bg_inset.xml b/res/drawable/apps_list_bg_inset.xml new file mode 100644 index 000000000..5ea78952f --- /dev/null +++ b/res/drawable/apps_list_bg_inset.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2015 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. +--> +<shape xmlns:android="http://schemas.android.com/apk/res/android" + android:shape="rectangle"> + <solid android:color="#ffffff" /> + <corners + android:bottomLeftRadius="3dp" + android:bottomRightRadius="3dp" /> +</shape>
\ No newline at end of file diff --git a/res/drawable/apps_list_fastscroll_bg.xml b/res/drawable/apps_list_fastscroll_bg.xml index 4ec18488b..780d3b0c3 100644 --- a/res/drawable/apps_list_fastscroll_bg.xml +++ b/res/drawable/apps_list_fastscroll_bg.xml @@ -18,7 +18,10 @@ android:shape="rectangle"> <solid android:color="@color/apps_view_scrollbar_thumb_color" /> <size - android:width="48dp" - android:height="48dp" /> - <corners android:radius="4dp" /> + android:width="64dp" + android:height="64dp" /> + <corners + android:topLeftRadius="64dp" + android:topRightRadius="64dp" + android:bottomLeftRadius="64dp" /> </shape>
\ No newline at end of file diff --git a/res/drawable/apps_list_scrollbar_thumb.xml b/res/drawable/apps_list_scrollbar_thumb.xml index ddd65b231..59383a5bb 100644 --- a/res/drawable/apps_list_scrollbar_thumb.xml +++ b/res/drawable/apps_list_scrollbar_thumb.xml @@ -17,5 +17,5 @@ <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="@color/apps_view_scrollbar_thumb_color" /> - <size android:width="4dp"/> + <size android:width="@dimen/apps_view_fast_scroll_bar_size" /> </shape>
\ No newline at end of file diff --git a/res/drawable/apps_reveal_bg.xml b/res/drawable/apps_reveal_bg.xml new file mode 100644 index 000000000..47c608f85 --- /dev/null +++ b/res/drawable/apps_reveal_bg.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2015 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. +--> +<inset xmlns:android="http://schemas.android.com/apk/res/android" + android:drawable="@drawable/apps_reveal_bg_inset" + android:insetLeft="@dimen/apps_container_inset" + android:insetRight="@dimen/apps_container_inset" />
\ No newline at end of file diff --git a/res/drawable/apps_reveal_bg_inset.xml b/res/drawable/apps_reveal_bg_inset.xml new file mode 100644 index 000000000..61f1c083a --- /dev/null +++ b/res/drawable/apps_reveal_bg_inset.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2015 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. +--> +<shape xmlns:android="http://schemas.android.com/apk/res/android" + android:shape="rectangle"> + <solid android:color="#ffffff" /> + <corners android:radius="3dp" /> +</shape>
\ No newline at end of file diff --git a/res/layout-sw600dp/apps_view.xml b/res/layout-sw600dp/apps_view.xml index 0628ca6d3..6f22460fa 100644 --- a/res/layout-sw600dp/apps_view.xml +++ b/res/layout-sw600dp/apps_view.xml @@ -18,7 +18,6 @@ android:id="@+id/apps_view" android:layout_width="match_parent" android:layout_height="match_parent" - android:padding="8dp" android:background="#22000000" android:descendantFocusability="afterDescendants"> <include diff --git a/res/layout/apps_list_view.xml b/res/layout/apps_list_view.xml index dfb2fc42f..59c04103f 100644 --- a/res/layout/apps_list_view.xml +++ b/res/layout/apps_list_view.xml @@ -20,12 +20,13 @@ android:layout_height="match_parent" android:orientation="vertical" android:elevation="15dp" - android:background="@drawable/apps_list_bg" android:visibility="gone"> <EditText android:id="@+id/app_search_box" android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_marginLeft="@dimen/apps_container_inset" + android:layout_marginRight="@dimen/apps_container_inset" android:padding="16dp" android:hint="@string/apps_view_search_bar_hint" android:maxLines="1" @@ -46,8 +47,10 @@ android:paddingTop="12dp" android:paddingBottom="12dp" android:clipToPadding="false" + android:fadeScrollbars="false" android:scrollbars="vertical" android:scrollbarThumbVertical="@drawable/apps_list_scrollbar_thumb" android:focusable="true" - android:descendantFocusability="afterDescendants" /> + android:descendantFocusability="afterDescendants" + android:background="@drawable/apps_list_bg" /> </LinearLayout>
\ No newline at end of file diff --git a/res/layout/apps_reveal_view.xml b/res/layout/apps_reveal_view.xml index 19e462bee..bc93359c1 100644 --- a/res/layout/apps_reveal_view.xml +++ b/res/layout/apps_reveal_view.xml @@ -21,5 +21,5 @@ android:layout_gravity="center" android:elevation="15dp" android:visibility="invisible" - android:background="@drawable/apps_list_bg" + android:background="@drawable/apps_reveal_bg" android:focusable="false" />
\ No newline at end of file diff --git a/res/layout/apps_view.xml b/res/layout/apps_view.xml index 00f3cca88..86d67e15f 100644 --- a/res/layout/apps_view.xml +++ b/res/layout/apps_view.xml @@ -13,16 +13,26 @@ See the License for the specific language governing permissions and limitations under the License. --> +<!-- The top and bottom paddings are defined in this container, but since we want + the list view to span the full width (for touch interception purposes), we + will bake the left/right padding into that view's background itself. --> <com.android.launcher3.AppsContainerView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/apps_view" android:layout_width="match_parent" android:layout_height="match_parent" - android:padding="8dp" + android:paddingTop="@dimen/apps_container_inset" + android:paddingBottom="@dimen/apps_container_inset" android:background="@drawable/apps_customize_bg" android:descendantFocusability="afterDescendants"> <include - layout="@layout/apps_reveal_view" /> + layout="@layout/apps_reveal_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_gravity="center" /> <include - layout="@layout/apps_list_view" /> + layout="@layout/apps_list_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_gravity="center" /> </com.android.launcher3.AppsContainerView>
\ No newline at end of file diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 9b4c56094..b9b9a2412 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -48,12 +48,14 @@ <!-- Apps view --> <dimen name="apps_container_width">0dp</dimen> + <dimen name="apps_container_inset">8dp</dimen> <dimen name="apps_grid_view_start_margin">52dp</dimen> <dimen name="apps_view_row_height">64dp</dimen> <dimen name="apps_view_section_text_size">24sp</dimen> - <dimen name="apps_view_fast_scroll_gutter_size">48dp</dimen> + <dimen name="apps_view_fast_scroll_bar_size">6dp</dimen> + <dimen name="apps_view_fast_scroll_gutter_size">40dp</dimen> <dimen name="apps_view_fast_scroll_popup_size">64dp</dimen> - <dimen name="apps_view_fast_scroll_text_size">48dp</dimen> + <dimen name="apps_view_fast_scroll_text_size">40dp</dimen> <!-- AllApps/Customize/AppsCustomize --> <!-- The height of the tab bar - if this changes, we should update the diff --git a/src/com/android/launcher3/AppsContainerRecyclerView.java b/src/com/android/launcher3/AppsContainerRecyclerView.java index 2280e99ef..c5a508c9c 100644 --- a/src/com/android/launcher3/AppsContainerRecyclerView.java +++ b/src/com/android/launcher3/AppsContainerRecyclerView.java @@ -37,6 +37,8 @@ import java.util.List; public class AppsContainerRecyclerView extends RecyclerView implements RecyclerView.OnItemTouchListener { + private static final float FAST_SCROLL_OVERLAY_Y_OFFSET_FACTOR = 1.5f; + private AlphabeticalAppsList mApps; private int mNumAppsPerRow; @@ -130,7 +132,7 @@ public class AppsContainerRecyclerView extends RecyclerView } else { x = getWidth() - getPaddingRight() - getScrollBarSize() - bgBounds.width(); } - int y = mLastY - bgBounds.height() / 2; + int y = mLastY - (int) (FAST_SCROLL_OVERLAY_Y_OFFSET_FACTOR * bgBounds.height()); y = Math.max(getPaddingTop(), Math.min(y, getHeight() - getPaddingBottom() - bgBounds.height())); canvas.translate(x, y); diff --git a/src/com/android/launcher3/AppsContainerView.java b/src/com/android/launcher3/AppsContainerView.java index 64b27baf5..ce092bfe4 100644 --- a/src/com/android/launcher3/AppsContainerView.java +++ b/src/com/android/launcher3/AppsContainerView.java @@ -39,9 +39,9 @@ import java.util.List; /** * The all apps list view container. */ -public class AppsContainerView extends FrameLayout implements DragSource, View.OnTouchListener, - View.OnLongClickListener, Insettable, TextWatcher, TextView.OnEditorActionListener, - LauncherTransitionable { +public class AppsContainerView extends FrameLayout implements DragSource, Insettable, TextWatcher, + TextView.OnEditorActionListener, LauncherTransitionable, View.OnTouchListener, + View.OnLongClickListener { private static final boolean ALLOW_SINGLE_APP_LAUNCH = true; @@ -188,10 +188,10 @@ public class AppsContainerView extends FrameLayout implements DragSource, View.O } @Override - public boolean onTouch(View v, MotionEvent event) { - if (event.getAction() == MotionEvent.ACTION_DOWN || - event.getAction() == MotionEvent.ACTION_MOVE) { - mLastTouchDownPos.set((int) event.getX(), (int) event.getY()); + public boolean onTouch(View v, MotionEvent ev) { + if (ev.getAction() == MotionEvent.ACTION_DOWN || + ev.getAction() == MotionEvent.ACTION_MOVE) { + mLastTouchDownPos.set((int) ev.getX(), (int) ev.getY()); } return false; } @@ -333,7 +333,6 @@ public class AppsContainerView extends FrameLayout implements DragSource, View.O List<AppInfo> appsWithoutSections = mApps.getAppsWithoutSectionBreaks(); List<AppInfo> apps = mApps.getApps(); if (appsWithoutSections.size() == 1) { - mSearchBar.clearFocus(); mAppsListView.getChildAt(apps.indexOf(appsWithoutSections.get(0))).performClick(); InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE); diff --git a/src/com/android/launcher3/AppsGridAdapter.java b/src/com/android/launcher3/AppsGridAdapter.java index 028cd8f70..6a4495e0e 100644 --- a/src/com/android/launcher3/AppsGridAdapter.java +++ b/src/com/android/launcher3/AppsGridAdapter.java @@ -84,12 +84,13 @@ class AppsGridAdapter extends RecyclerView.Adapter<AppsGridAdapter.ViewHolder> { mSectionTextPaint.getTextBounds(section, 0, section.length(), mTmpBounds); if (mIsRtl) { - c.drawText(section, parent.getWidth() - mStartMargin + - (mStartMargin - mTmpBounds.width()) / 2, + int left = parent.getWidth() - mPaddingStart - mStartMargin; + c.drawText(section, left + (mStartMargin - mTmpBounds.width()) / 2, child.getTop() + (2 * child.getPaddingTop()) + mTmpBounds.height(), mSectionTextPaint); } else { - c.drawText(section, (mStartMargin - mTmpBounds.width()) / 2, + int left = mPaddingStart; + c.drawText(section, left + (mStartMargin - mTmpBounds.width()) / 2, child.getTop() + (2 * child.getPaddingTop()) + mTmpBounds.height(), mSectionTextPaint); } @@ -118,6 +119,7 @@ class AppsGridAdapter extends RecyclerView.Adapter<AppsGridAdapter.ViewHolder> { private String mEmptySearchText; // Section drawing + private int mPaddingStart; private int mStartMargin; private Paint mSectionTextPaint; private Rect mTmpBounds = new Rect(); @@ -136,6 +138,7 @@ class AppsGridAdapter extends RecyclerView.Adapter<AppsGridAdapter.ViewHolder> { mIconClickListener = iconClickListener; mIconLongClickListener = iconLongClickListener; mStartMargin = res.getDimensionPixelSize(R.dimen.apps_grid_view_start_margin); + mPaddingStart = res.getDimensionPixelSize(R.dimen.apps_container_inset); mSectionTextPaint = new Paint(); mSectionTextPaint.setTextSize(res.getDimensionPixelSize( R.dimen.apps_view_section_text_size)); |