summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/drawable/all_apps_search_bg.xml10
-rw-r--r--res/drawable/all_apps_search_hint.xml20
-rw-r--r--res/drawable/ic_allapps_search.xml24
-rw-r--r--res/layout/all_apps.xml53
-rw-r--r--res/values/dimens.xml4
-rw-r--r--res/values/strings.xml2
-rw-r--r--src/com/android/launcher3/BaseRecyclerViewFastScrollPopup.java4
-rw-r--r--src/com/android/launcher3/Launcher.java4
-rw-r--r--src/com/android/launcher3/allapps/AllAppsContainerView.java66
-rw-r--r--src/com/android/launcher3/allapps/AllAppsTransitionController.java1
10 files changed, 141 insertions, 47 deletions
diff --git a/res/drawable/all_apps_search_bg.xml b/res/drawable/all_apps_search_bg.xml
index b0ed9b54b..cf63d41c2 100644
--- a/res/drawable/all_apps_search_bg.xml
+++ b/res/drawable/all_apps_search_bg.xml
@@ -15,14 +15,6 @@
limitations under the License.
-->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
- <item>
- <shape android:shape="rectangle">
- <solid android:color="@color/quantum_panel_bg_color" />
- <corners
- android:topLeftRadius="2dp"
- android:topRightRadius="2dp" />
- </shape>
- </item>
<item
android:top="@dimen/all_apps_search_bar_bg_overflow"
android:left="@dimen/all_apps_search_bar_bg_overflow"
@@ -33,7 +25,7 @@
<solid android:color="@android:color/transparent" />
<stroke
android:width="@dimen/all_apps_search_bar_divider_width"
- android:color="#1E000000"/>
+ android:color="?android:attr/colorAccent"/>
</shape>
</item>
</layer-list> \ No newline at end of file
diff --git a/res/drawable/all_apps_search_hint.xml b/res/drawable/all_apps_search_hint.xml
new file mode 100644
index 000000000..b2ff7a428
--- /dev/null
+++ b/res/drawable/all_apps_search_hint.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2016 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.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:color="@android:color/transparent" android:state_focused="true" />
+ <item android:color="?android:attr/colorAccent"/>
+</selector> \ No newline at end of file
diff --git a/res/drawable/ic_allapps_search.xml b/res/drawable/ic_allapps_search.xml
new file mode 100644
index 000000000..2aeb9479b
--- /dev/null
+++ b/res/drawable/ic_allapps_search.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+ Copyright (C) 2016 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0">
+ <path
+ android:fillColor="?android:attr/colorAccent"
+ android:pathData="M15.5,14h-0.79l-0.28,-0.27C15.41,12.59 16,11.11 16,9.5 16,5.91 13.09,3 9.5,3S3,5.91 3,9.5 5.91,16 9.5,16c1.61,0 3.09,-0.59 4.23,-1.57l0.27,0.28v0.79l5,4.99L20.49,19l-4.99,-5zM9.5,14C7.01,14 5,11.99 5,9.5S7.01,5 9.5,5 14,7.01 14,9.5 11.99,14 9.5,14z" />
+</vector>
diff --git a/res/layout/all_apps.xml b/res/layout/all_apps.xml
index 1b843ed7d..a0b73f034 100644
--- a/res/layout/all_apps.xml
+++ b/res/layout/all_apps.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
+<!-- Copyright (C) 2016 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.
@@ -16,15 +16,14 @@
<!-- 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.allapps.AllAppsContainerView
- xmlns:android="http://schemas.android.com/apk/res/android"
+<com.android.launcher3.allapps.AllAppsContainerView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:launcher="http://schemas.android.com/apk/res-auto"
android:id="@+id/apps_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:paddingTop="@dimen/container_bounds_inset"
- android:paddingBottom="@dimen/container_bounds_inset"
android:orientation="vertical"
+ android:paddingBottom="@dimen/container_bounds_inset"
+ android:paddingTop="@dimen/container_bounds_inset"
launcher:revealBackground="@drawable/quantum_panel_shape">
<View
@@ -32,60 +31,70 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
- android:focusable="false"
android:elevation="2dp"
+ android:focusable="false"
android:visibility="invisible" />
<com.android.launcher3.allapps.AllAppsRecyclerViewContainerView
+ android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:id="@+id/main_content"
- android:saveEnabled="false"
- android:visibility="gone"
android:layout_gravity="center"
+ android:elevation="15dp"
android:focusable="true"
android:focusableInTouchMode="true"
- android:elevation="15dp" >
+ android:saveEnabled="false"
+ android:visibility="gone">
<!-- DO NOT CHANGE THE ID -->
<com.android.launcher3.allapps.AllAppsRecyclerView
android:id="@+id/apps_list_view"
- android:theme="@style/CustomOverscroll.Light"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal|top"
+ android:layout_marginTop="@dimen/all_apps_search_bar_height"
android:clipToPadding="false"
+ android:descendantFocusability="afterDescendants"
android:focusable="true"
- android:layout_marginTop="@dimen/all_apps_search_bar_height"
- android:descendantFocusability="afterDescendants" />
+ android:theme="@style/CustomOverscroll.Light" />
<LinearLayout
android:id="@+id/search_container"
android:layout_width="match_parent"
- android:saveEnabled="false"
android:layout_height="@dimen/all_apps_search_bar_height"
- android:layout_gravity="start|top"
+ android:layout_gravity="center|top"
+ android:paddingLeft="@dimen/container_fastscroll_thumb_max_width"
+ android:paddingRight="@dimen/container_fastscroll_thumb_max_width"
+ android:background="@drawable/all_apps_search_bg"
+ android:gravity="center|bottom"
android:orientation="horizontal"
- android:background="@drawable/all_apps_search_bg" >
+ android:saveEnabled="false">
+
+ <ImageView
+ android:id="@+id/search_icon"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:scaleType="fitCenter"
+ android:layout_marginTop="@dimen/all_apps_search_bar_icon_margin_top"
+ android:paddingEnd="@dimen/all_apps_search_bar_icon_margin_right"
+ android:src="@drawable/ic_allapps_search" />
<com.android.launcher3.ExtendedEditText
android:id="@+id/search_box_input"
- android:layout_width="match_parent"
+ android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="@android:color/transparent"
android:focusableInTouchMode="true"
- android:gravity="fill_horizontal|center_vertical"
+ android:gravity="start|center_vertical"
android:hint="@string/all_apps_search_bar_hint"
- android:inputType="text|textNoSuggestions|textCapWords"
android:imeOptions="actionSearch|flagNoExtractUi"
+ android:inputType="text|textNoSuggestions|textCapWords"
android:maxLines="1"
android:scrollHorizontally="true"
- android:layout_marginLeft="@dimen/container_fastscroll_thumb_max_width"
- android:layout_marginRight="@dimen/container_fastscroll_thumb_max_width"
android:singleLine="true"
android:textColor="#4c4c4c"
- android:textColorHint="#9c9c9c"
+ android:textColorHint="@drawable/all_apps_search_hint"
android:textSize="16sp" />
</LinearLayout>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index c7dd3753b..c8a05b781 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -64,6 +64,8 @@
<dimen name="all_apps_grid_section_y_offset">8dp</dimen>
<dimen name="all_apps_grid_section_text_size">24sp</dimen>
<dimen name="all_apps_search_bar_height">60dp</dimen>
+ <dimen name="all_apps_search_bar_icon_margin_right">4dp</dimen>
+ <dimen name="all_apps_search_bar_icon_margin_top">1dp</dimen>
<dimen name="all_apps_icon_top_bottom_padding">8dp</dimen>
<dimen name="all_apps_icon_width_gap">24dp</dimen>
<!-- The top padding should account for the existing all_apps_list_top_bottom_padding -->
@@ -76,7 +78,7 @@
<dimen name="all_apps_background_canvas_height">475dp</dimen>
<!-- Search bar in All Apps -->
- <dimen name="all_apps_header_max_elevation">4dp</dimen>
+ <dimen name="all_apps_header_max_elevation">3dp</dimen>
<dimen name="all_apps_header_scroll_to_elevation">16dp</dimen>
<dimen name="all_apps_header_shadow_height">6dp</dimen>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 4e5fcff81..11760f4e1 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -47,7 +47,7 @@
<!-- All Apps -->
<!-- Search bar text in the apps view. [CHAR_LIMIT=50] -->
- <string name="all_apps_search_bar_hint">Search Apps&#8230;</string>
+ <string name="all_apps_search_bar_hint">Search Apps</string>
<!-- Loading apps text. [CHAR_LIMIT=50] -->
<string name="all_apps_loading_message">Loading Apps&#8230;</string>
<!-- No-search-results text. [CHAR_LIMIT=50] -->
diff --git a/src/com/android/launcher3/BaseRecyclerViewFastScrollPopup.java b/src/com/android/launcher3/BaseRecyclerViewFastScrollPopup.java
index da7fa419e..37584fede 100644
--- a/src/com/android/launcher3/BaseRecyclerViewFastScrollPopup.java
+++ b/src/com/android/launcher3/BaseRecyclerViewFastScrollPopup.java
@@ -32,9 +32,9 @@ public class BaseRecyclerViewFastScrollPopup {
private static final float FAST_SCROLL_OVERLAY_Y_OFFSET_FACTOR = 1.5f;
- private static final int SHADOW_INSET = 6;
+ private static final int SHADOW_INSET = 5;
private static final int SHADOW_SHIFT_Y = 4;
- private static final float SHADOW_ALPHA_MULTIPLIER = 0.6f;
+ private static final float SHADOW_ALPHA_MULTIPLIER = 0.5f;
private Resources mRes;
private BaseRecyclerView mRv;
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 84c29dcfa..a31c8aeb3 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -1370,7 +1370,9 @@ public class Launcher extends Activity
mDragController.addDropTarget(mWorkspace);
mDropTargetBar.setup(mDragController);
- mAllAppsController.setupViews(mAppsView, mHotseat, mWorkspace);
+ if (FeatureFlags.LAUNCHER3_ALL_APPS_PULL_UP) {
+ mAllAppsController.setupViews(mAppsView, mHotseat, mWorkspace);
+ }
if (TestingUtils.MEMORY_DUMP_ENABLED) {
TestingUtils.addWeightWatcher(this);
diff --git a/src/com/android/launcher3/allapps/AllAppsContainerView.java b/src/com/android/launcher3/allapps/AllAppsContainerView.java
index c3da49124..868408f14 100644
--- a/src/com/android/launcher3/allapps/AllAppsContainerView.java
+++ b/src/com/android/launcher3/allapps/AllAppsContainerView.java
@@ -25,11 +25,14 @@ import android.text.Selection;
import android.text.SpannableStringBuilder;
import android.text.method.TextKeyListener;
import android.util.AttributeSet;
+import android.view.Gravity;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewConfiguration;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.ImageView;
import android.widget.LinearLayout;
import com.android.launcher3.AppInfo;
@@ -58,7 +61,6 @@ import java.util.ArrayList;
import java.util.List;
-
/**
* A merge algorithm that merges every section indiscriminately.
*/
@@ -66,8 +68,8 @@ final class FullMergeAlgorithm implements AlphabeticalAppsList.MergeAlgorithm {
@Override
public boolean continueMerging(AlphabeticalAppsList.SectionInfo section,
- AlphabeticalAppsList.SectionInfo withSection,
- int sectionAppCount, int numAppsPerRow, int mergeCount) {
+ AlphabeticalAppsList.SectionInfo withSection,
+ int sectionAppCount, int numAppsPerRow, int mergeCount) {
// Don't merge the predicted apps
if (section.firstAppItem.viewType != AllAppsGridAdapter.ICON_VIEW_TYPE) {
return false;
@@ -98,8 +100,8 @@ final class SimpleSectionMergeAlgorithm implements AlphabeticalAppsList.MergeAlg
@Override
public boolean continueMerging(AlphabeticalAppsList.SectionInfo section,
- AlphabeticalAppsList.SectionInfo withSection,
- int sectionAppCount, int numAppsPerRow, int mergeCount) {
+ AlphabeticalAppsList.SectionInfo withSection,
+ int sectionAppCount, int numAppsPerRow, int mergeCount) {
// Don't merge the predicted apps
if (section.firstAppItem.viewType != AllAppsGridAdapter.ICON_VIEW_TYPE) {
return false;
@@ -148,6 +150,7 @@ public class AllAppsContainerView extends BaseContainerView implements DragSourc
private View mSearchContainer;
private ExtendedEditText mSearchInput;
+ private ImageView mSearchIcon;
private HeaderElevationController mElevationController;
private SpannableStringBuilder mSearchQueryBuilder = null;
@@ -232,6 +235,7 @@ public class AllAppsContainerView extends BaseContainerView implements DragSourc
mSearchBarController.setVisibility(View.INVISIBLE);
}
}
+
/**
* Sets the search bar that shows above the a-z list.
*/
@@ -261,8 +265,8 @@ public class AllAppsContainerView extends BaseContainerView implements DragSourc
Utilities.mapCoordInSelfToDescendent(mAppsRecyclerView, this, point);
// if the MotionEvent is inside the thumb, container should not be pulled down.
- if (mAppsRecyclerView.getScrollBar().isNearThumb(point[0], point[1])){
- return false;
+ if (mAppsRecyclerView.getScrollBar().isNearThumb(point[0], point[1])) {
+ return false;
}
// If scroller is at the very top, then it's okay for the container to be pulled down.
if (Float.compare(0f, mAppsRecyclerView.getScrollBar().getThumbOffset().y) == 0) {
@@ -270,6 +274,7 @@ public class AllAppsContainerView extends BaseContainerView implements DragSourc
}
return false;
}
+
/**
* Focuses the search field and begins an app search.
*/
@@ -305,6 +310,42 @@ public class AllAppsContainerView extends BaseContainerView implements DragSourc
mSearchContainer = findViewById(R.id.search_container);
mSearchInput = (ExtendedEditText) findViewById(R.id.search_box_input);
+ mSearchIcon = (ImageView) findViewById(R.id.search_icon);
+
+ final LinearLayout.LayoutParams searchParams =
+ (LinearLayout.LayoutParams) mSearchInput.getLayoutParams();
+ mSearchInput.setOnFocusChangeListener(new OnFocusChangeListener() {
+ @Override
+ public void onFocusChange(View view, boolean focused) {
+ if (focused) {
+ searchParams.width = LayoutParams.MATCH_PARENT;
+ mSearchInput.setLayoutParams(searchParams);
+ mSearchInput.setGravity(Gravity.FILL_HORIZONTAL | Gravity.CENTER_VERTICAL);
+ mSearchIcon.setVisibility(View.GONE);
+ } else {
+ searchParams.width = LayoutParams.WRAP_CONTENT;
+ mSearchInput.setLayoutParams(searchParams);
+ mSearchInput.setGravity(Gravity.START | Gravity.CENTER_VERTICAL);
+ mSearchIcon.setVisibility(View.VISIBLE);
+ }
+ }
+ });
+
+ final OnClickListener searchFocusListener = new OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ if (!mSearchInput.isFocused()) {
+ mSearchInput.requestFocus();
+ final InputMethodManager imm =
+ (InputMethodManager)getContext().getSystemService(
+ Context.INPUT_METHOD_SERVICE);
+ imm.showSoftInput(mSearchInput, 0);
+ }
+ }
+ };
+ mSearchInput.setOnClickListener(searchFocusListener);
+ mSearchContainer.setOnClickListener(searchFocusListener);
+
mElevationController = Utilities.ATLEAST_LOLLIPOP
? new HeaderElevationController.ControllerVL(mSearchContainer)
: new HeaderElevationController.ControllerV16(mSearchContainer);
@@ -379,7 +420,11 @@ public class AllAppsContainerView extends BaseContainerView implements DragSourc
if (mNumAppsPerRow > 0) {
int iconSize = availableWidth / mNumAppsPerRow;
int iconSpacing = (iconSize - grid.allAppsIconSizePx) / 2;
- mSearchInput.setPaddingRelative(iconSpacing, 0, iconSpacing, 0);
+ final int thumbMaxWidth =
+ getResources().getDimensionPixelSize(
+ R.dimen.container_fastscroll_thumb_max_width);
+ mSearchContainer.setPaddingRelative(
+ iconSpacing + thumbMaxWidth, 0, iconSpacing + thumbMaxWidth, 0);
}
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
@@ -452,7 +497,6 @@ public class AllAppsContainerView extends BaseContainerView implements DragSourc
lp.leftMargin = bgPadding.left;
lp.rightMargin = bgPadding.right;
-
// Clip the view to the left and right edge of the background to
// to prevent shadows from rendering beyond the edges
final Rect newClipBounds = new Rect(
@@ -472,7 +516,7 @@ public class AllAppsContainerView extends BaseContainerView implements DragSourc
MarginLayoutParams mlp = (MarginLayoutParams) mAppsRecyclerView.getLayoutParams();
Rect insets = mLauncher.getDragLayer().getInsets();
- getContentView().setPadding(0,0,0, insets.bottom);
+ getContentView().setPadding(0, 0, 0, insets.bottom);
int height = insets.top + grid.hotseatCellHeightPx;
mlp.topMargin = height;
@@ -482,10 +526,10 @@ public class AllAppsContainerView extends BaseContainerView implements DragSourc
(LinearLayout.LayoutParams) mSearchInput.getLayoutParams();
llp.topMargin = insets.top;
mSearchInput.setLayoutParams(llp);
+ mSearchIcon.setLayoutParams(llp);
lp.height = height;
}
- mSearchContainer.getBackground().setAlpha(0);
}
mSearchContainer.setLayoutParams(lp);
}
diff --git a/src/com/android/launcher3/allapps/AllAppsTransitionController.java b/src/com/android/launcher3/allapps/AllAppsTransitionController.java
index 8a14a666b..ac256b126 100644
--- a/src/com/android/launcher3/allapps/AllAppsTransitionController.java
+++ b/src/com/android/launcher3/allapps/AllAppsTransitionController.java
@@ -408,6 +408,7 @@ public class AllAppsTransitionController implements TouchController, VerticalPul
mAppsView.setVisibility(View.INVISIBLE);
mHotseat.setBackgroundTransparent(false /* transparent */);
mHotseat.setVisibility(View.VISIBLE);
+ mAppsView.reset();
setProgress(mShiftRange);
}