From 5f4e0fdd2e4edeb9211e2dcd1c99497f175731f8 Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Fri, 22 May 2015 11:12:27 -0700 Subject: [PATCH] Moving all apps code into sub package. - Renaming resources, dimens, etc to be more consistent - Removing old AppsCustomize resources and other unused code Change-Id: I15ce35e7cb7a9b9344fc7103963e4e4c9e45d89a --- ...roll_bg.xml => all_apps_fastscroll_bg.xml} | 2 +- ...roll_bg.xml => all_apps_fastscroll_bg.xml} | 2 +- ...thumb.xml => all_apps_scrollbar_thumb.xml} | 4 +- ...s_search_bg.xml => all_apps_search_bg.xml} | 0 res/drawable/apps_list_search_bg.xml | 23 ----- res/layout-land/launcher.xml | 2 +- res/layout-port/launcher.xml | 2 +- .../{apps_view.xml => all_apps.xml} | 10 +-- res/layout-sw720dp/launcher.xml | 2 +- res/layout/{apps_view.xml => all_apps.xml} | 8 +- ...s_list_view.xml => all_apps_container.xml} | 22 ++--- ...pty_view.xml => all_apps_empty_search.xml} | 2 +- ...s_grid_icon_view.xml => all_apps_icon.xml} | 4 +- ...w.xml => all_apps_prediction_bar_icon.xml} | 0 ...ps_reveal_view.xml => all_apps_reveal.xml} | 0 res/layout/{application.xml => app_icon.xml} | 0 res/layout/widgets_view.xml | 2 +- res/values-sw340dp-port/config.xml | 18 ---- res/values-sw600dp/dimens.xml | 10 +-- res/values-sw600dp/styles.xml | 21 ----- res/values-sw720dp-land/dimens.xml | 4 - res/values-sw720dp/config.xml | 2 +- res/values-sw720dp/dimens.xml | 6 +- res/values/attrs.xml | 27 ------ res/values/colors.xml | 6 +- res/values/config.xml | 18 ++-- res/values/dimens.xml | 67 +++++++------- res/values/strings.xml | 10 +-- src/com/android/launcher3/AppInfo.java | 2 +- ...ecyclerView.java => BaseRecyclerView.java} | 8 +- src/com/android/launcher3/DeviceProfile.java | 33 +++---- src/com/android/launcher3/Launcher.java | 21 ++--- .../LauncherStateTransitionAnimation.java | 15 ++-- .../launcher3/LauncherTransitionable.java | 30 +++++++ .../launcher3/WidgetPreviewLoader.java | 2 - .../WorkspaceStateTransitionAnimation.java | 4 +- .../AllAppsContainerView.java} | 87 +++++++++++++------ .../AllAppsGridAdapter.java} | 42 +++++---- .../AllAppsRecyclerView.java} | 41 +++++---- .../AllAppsRecyclerViewContainerView.java} | 20 +++-- .../AllAppsSearchEditView.java} | 10 +-- .../{ => allapps}/AlphabeticalAppsList.java | 13 +-- ...clerView.java => WidgetsRecyclerView.java} | 12 +-- 43 files changed, 292 insertions(+), 322 deletions(-) rename res/drawable-ldrtl/{apps_list_fastscroll_bg.xml => all_apps_fastscroll_bg.xml} (92%) rename res/drawable/{apps_list_fastscroll_bg.xml => all_apps_fastscroll_bg.xml} (92%) rename res/drawable/{apps_list_scrollbar_thumb.xml => all_apps_scrollbar_thumb.xml} (84%) rename res/drawable/{apps_search_bg.xml => all_apps_search_bg.xml} (100%) delete mode 100644 res/drawable/apps_list_search_bg.xml rename res/layout-sw600dp/{apps_view.xml => all_apps.xml} (82%) rename res/layout/{apps_view.xml => all_apps.xml} (88%) rename res/layout/{apps_list_view.xml => all_apps_container.xml} (84%) rename res/layout/{apps_empty_view.xml => all_apps_empty_search.xml} (94%) rename res/layout/{apps_grid_icon_view.xml => all_apps_icon.xml} (89%) rename res/layout/{apps_prediction_bar_icon_view.xml => all_apps_prediction_bar_icon.xml} (100%) rename res/layout/{apps_reveal_view.xml => all_apps_reveal.xml} (100%) rename res/layout/{application.xml => app_icon.xml} (100%) delete mode 100644 res/values-sw340dp-port/config.xml delete mode 100644 res/values-sw600dp/styles.xml rename src/com/android/launcher3/{BaseContainerRecyclerView.java => BaseRecyclerView.java} (91%) create mode 100644 src/com/android/launcher3/LauncherTransitionable.java rename src/com/android/launcher3/{AppsContainerView.java => allapps/AllAppsContainerView.java} (92%) rename src/com/android/launcher3/{AppsGridAdapter.java => allapps/AllAppsGridAdapter.java} (92%) rename src/com/android/launcher3/{AppsContainerRecyclerView.java => allapps/AllAppsRecyclerView.java} (92%) rename src/com/android/launcher3/{AppsRecyclerViewContainer.java => allapps/AllAppsRecyclerViewContainerView.java} (72%) rename src/com/android/launcher3/{AppsContainerSearchEditTextView.java => allapps/AllAppsSearchEditView.java} (83%) rename src/com/android/launcher3/{ => allapps}/AlphabeticalAppsList.java (97%) rename src/com/android/launcher3/widget/{WidgetsContainerRecyclerView.java => WidgetsRecyclerView.java} (67%) diff --git a/res/drawable-ldrtl/apps_list_fastscroll_bg.xml b/res/drawable-ldrtl/all_apps_fastscroll_bg.xml similarity index 92% rename from res/drawable-ldrtl/apps_list_fastscroll_bg.xml rename to res/drawable-ldrtl/all_apps_fastscroll_bg.xml index 772975a71b..4777f70bbe 100644 --- a/res/drawable-ldrtl/apps_list_fastscroll_bg.xml +++ b/res/drawable-ldrtl/all_apps_fastscroll_bg.xml @@ -16,7 +16,7 @@ --> - + diff --git a/res/drawable/apps_list_fastscroll_bg.xml b/res/drawable/all_apps_fastscroll_bg.xml similarity index 92% rename from res/drawable/apps_list_fastscroll_bg.xml rename to res/drawable/all_apps_fastscroll_bg.xml index 780d3b0c31..6b7448459a 100644 --- a/res/drawable/apps_list_fastscroll_bg.xml +++ b/res/drawable/all_apps_fastscroll_bg.xml @@ -16,7 +16,7 @@ --> - + diff --git a/res/drawable/apps_list_scrollbar_thumb.xml b/res/drawable/all_apps_scrollbar_thumb.xml similarity index 84% rename from res/drawable/apps_list_scrollbar_thumb.xml rename to res/drawable/all_apps_scrollbar_thumb.xml index 318d406788..649a963b1e 100644 --- a/res/drawable/apps_list_scrollbar_thumb.xml +++ b/res/drawable/all_apps_scrollbar_thumb.xml @@ -16,6 +16,6 @@ --> - - + + \ No newline at end of file diff --git a/res/drawable/apps_search_bg.xml b/res/drawable/all_apps_search_bg.xml similarity index 100% rename from res/drawable/apps_search_bg.xml rename to res/drawable/all_apps_search_bg.xml diff --git a/res/drawable/apps_list_search_bg.xml b/res/drawable/apps_list_search_bg.xml deleted file mode 100644 index 9bb6d81b2f..0000000000 --- a/res/drawable/apps_list_search_bg.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/res/layout-land/launcher.xml b/res/layout-land/launcher.xml index 113b319ff2..bf9296f7d3 100644 --- a/res/layout-land/launcher.xml +++ b/res/layout-land/launcher.xml @@ -61,7 +61,7 @@ android:layout_height="match_parent" android:visibility="invisible" /> - - - - \ No newline at end of file + \ No newline at end of file diff --git a/res/layout-sw720dp/launcher.xml b/res/layout-sw720dp/launcher.xml index 8a9f3e9139..b27f33bbfa 100644 --- a/res/layout-sw720dp/launcher.xml +++ b/res/layout-sw720dp/launcher.xml @@ -71,7 +71,7 @@ android:layout_height="match_parent" android:visibility="invisible" /> - - - \ No newline at end of file + \ No newline at end of file diff --git a/res/layout/apps_list_view.xml b/res/layout/all_apps_container.xml similarity index 84% rename from res/layout/apps_list_view.xml rename to res/layout/all_apps_container.xml index 040498359e..a20ab46d8f 100644 --- a/res/layout/apps_list_view.xml +++ b/res/layout/all_apps_container.xml @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. --> - - @@ -37,7 +37,7 @@ android:id="@+id/prediction_bar" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginTop="@dimen/apps_search_bar_height" + android:layout_marginTop="@dimen/all_apps_search_bar_height" android:orientation="horizontal" android:descendantFocusability="afterDescendants" android:focusable="true" @@ -49,8 +49,8 @@ + android:layout_height="@dimen/all_apps_search_bar_height" + android:background="@drawable/all_apps_search_bg" > - - \ No newline at end of file + \ No newline at end of file diff --git a/res/layout/apps_empty_view.xml b/res/layout/all_apps_empty_search.xml similarity index 94% rename from res/layout/apps_empty_view.xml rename to res/layout/all_apps_empty_search.xml index e4c4e2e8cc..f60c4a09ad 100644 --- a/res/layout/apps_empty_view.xml +++ b/res/layout/all_apps_empty_search.xml @@ -21,7 +21,7 @@ android:gravity="center" android:paddingTop="24dp" android:paddingBottom="24dp" - android:paddingRight="@dimen/apps_grid_view_start_margin" + android:paddingRight="@dimen/all_apps_grid_view_start_margin" android:textSize="16sp" android:textColor="#4c4c4c" android:focusable="false" /> diff --git a/res/layout/apps_grid_icon_view.xml b/res/layout/all_apps_icon.xml similarity index 89% rename from res/layout/apps_grid_icon_view.xml rename to res/layout/all_apps_icon.xml index 7165f383d1..10ed25c475 100644 --- a/res/layout/apps_grid_icon_view.xml +++ b/res/layout/all_apps_icon.xml @@ -21,8 +21,8 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="left|center_vertical" - android:paddingTop="@dimen/apps_icon_top_bottom_padding" - android:paddingBottom="@dimen/apps_icon_top_bottom_padding" + android:paddingTop="@dimen/all_apps_icon_top_bottom_padding" + android:paddingBottom="@dimen/all_apps_icon_top_bottom_padding" android:focusable="true" android:background="@drawable/focusable_view_bg" launcher:iconDisplay="all_apps" /> diff --git a/res/layout/apps_prediction_bar_icon_view.xml b/res/layout/all_apps_prediction_bar_icon.xml similarity index 100% rename from res/layout/apps_prediction_bar_icon_view.xml rename to res/layout/all_apps_prediction_bar_icon.xml diff --git a/res/layout/apps_reveal_view.xml b/res/layout/all_apps_reveal.xml similarity index 100% rename from res/layout/apps_reveal_view.xml rename to res/layout/all_apps_reveal.xml diff --git a/res/layout/application.xml b/res/layout/app_icon.xml similarity index 100% rename from res/layout/application.xml rename to res/layout/app_icon.xml diff --git a/res/layout/widgets_view.xml b/res/layout/widgets_view.xml index 196dc45e5e..2615ddbddf 100644 --- a/res/layout/widgets_view.xml +++ b/res/layout/widgets_view.xml @@ -34,7 +34,7 @@ android:focusable="false" android:visibility="invisible" /> - - - - - diff --git a/res/values-sw600dp/dimens.xml b/res/values-sw600dp/dimens.xml index c366ef31bf..994c1925fd 100644 --- a/res/values-sw600dp/dimens.xml +++ b/res/values-sw600dp/dimens.xml @@ -17,11 +17,11 @@ 64dp - - 18dp - 0dp - 26sp - 12dp + + 18dp + 0dp + 26sp + 12dp 400dp diff --git a/res/values-sw600dp/styles.xml b/res/values-sw600dp/styles.xml deleted file mode 100644 index bcbbafdbbb..0000000000 --- a/res/values-sw600dp/styles.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - diff --git a/res/values-sw720dp-land/dimens.xml b/res/values-sw720dp-land/dimens.xml index ca13db05b9..514980fe0b 100644 --- a/res/values-sw720dp-land/dimens.xml +++ b/res/values-sw720dp-land/dimens.xml @@ -15,10 +15,6 @@ --> - - 4 - 2 - 100dip diff --git a/res/values-sw720dp/config.xml b/res/values-sw720dp/config.xml index af6751e608..94cffcb551 100644 --- a/res/values-sw720dp/config.xml +++ b/res/values-sw720dp/config.xml @@ -2,7 +2,7 @@ true true - + 90 diff --git a/res/values-sw720dp/dimens.xml b/res/values-sw720dp/dimens.xml index 39b0c80069..89942f741c 100644 --- a/res/values-sw720dp/dimens.xml +++ b/res/values-sw720dp/dimens.xml @@ -16,8 +16,10 @@ 72dp - 54dp - 16dp + + + 54dp + 16dp 8dip diff --git a/res/values/attrs.xml b/res/values/attrs.xml index 782d050b5a..827332ad7b 100644 --- a/res/values/attrs.xml +++ b/res/values/attrs.xml @@ -72,16 +72,6 @@ - - - - - - - - - - @@ -93,23 +83,6 @@ - - - - - - - - - - - - - - - - diff --git a/res/values/colors.xml b/res/values/colors.xml index a5db2fc403..e2b8a2ea76 100644 --- a/res/values/colors.xml +++ b/res/values/colors.xml @@ -36,9 +36,9 @@ #FFFFFFFF #FF374248 - - #009688 - #009688 + + #009688 + #009688 #FFFFFF diff --git a/res/values/config.xml b/res/values/config.xml index b6e633c10e..fbce3a41f7 100644 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -1,8 +1,5 @@ - 6 - 5 - 3 20 @@ -24,21 +21,20 @@ -1500 - + 55 - 100 + 100 250 80 - - 220 - 300 - - 60 + + 220 + 300 + 60 diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 3e5fe3a830..246adcdad1 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -15,13 +15,14 @@ --> + 48dp + 6dp 500dp 56dp 20dp 4dp - 18dp 8dp 80dp 120dp @@ -48,48 +49,29 @@ 4dip 12dip - - 0dp - 8dp - 56dp - 8dp - 24sp - 4dp - 64dp - -16dp - 72dp - 48dp - 52dp - 8dp - 12dp - + 8dp - - 48dp + 8dp + 56dp + 8dp + 24sp + 52dp + 8dp + 18dp + 12dp - - 14dp - 14sp + 4dp + 64dp + -16dp + 72dp + 48dp 4dp 16dp 6dp - - - 20dp - - - 12dp - - - 30dp - 8dp 8dp @@ -109,6 +91,23 @@ 0dp 0dp + + + 14dp + 14sp + + + 20dp + + + 12dp + + + 30dp + 4dp diff --git a/res/values/strings.xml b/res/values/strings.xml index 18f97c84d1..a8c668d619 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -47,20 +47,20 @@ Show Mem - + Touch & hold to pick up a widget. %1$d \u00d7 %2$d - + - Search Apps + Search Apps - Loading Apps… + Loading Apps… - No Apps found matching \"%1$s\" + No Apps found matching \"%1$s\" diff --git a/src/com/android/launcher3/AppInfo.java b/src/com/android/launcher3/AppInfo.java index 58a57a1fe6..9c87ced54d 100644 --- a/src/com/android/launcher3/AppInfo.java +++ b/src/com/android/launcher3/AppInfo.java @@ -38,7 +38,7 @@ public class AppInfo extends ItemInfo { /** * The intent used to start the application. */ - Intent intent; + public Intent intent; /** * A bitmap version of the application icon. diff --git a/src/com/android/launcher3/BaseContainerRecyclerView.java b/src/com/android/launcher3/BaseRecyclerView.java similarity index 91% rename from src/com/android/launcher3/BaseContainerRecyclerView.java rename to src/com/android/launcher3/BaseRecyclerView.java index e52d887083..b63ef788a2 100644 --- a/src/com/android/launcher3/BaseContainerRecyclerView.java +++ b/src/com/android/launcher3/BaseRecyclerView.java @@ -26,7 +26,7 @@ import com.android.launcher3.util.Thunk; * A base {@link RecyclerView}, which will NOT intercept a touch sequence unless the scrolling * velocity is below a predefined threshold. */ -public class BaseContainerRecyclerView extends RecyclerView +public class BaseRecyclerView extends RecyclerView implements RecyclerView.OnItemTouchListener { private static final int SCROLL_DELTA_THRESHOLD_DP = 4; @@ -35,15 +35,15 @@ public class BaseContainerRecyclerView extends RecyclerView @Thunk int mDy = 0; private float mDeltaThreshold; - public BaseContainerRecyclerView(Context context) { + public BaseRecyclerView(Context context) { this(context, null); } - public BaseContainerRecyclerView(Context context, AttributeSet attrs) { + public BaseRecyclerView(Context context, AttributeSet attrs) { this(context, attrs, 0); } - public BaseContainerRecyclerView(Context context, AttributeSet attrs, int defStyleAttr) { + public BaseRecyclerView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); mDeltaThreshold = getResources().getDisplayMetrics().density * SCROLL_DELTA_THRESHOLD_DP; diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java index 8f20565690..bee6cb0939 100644 --- a/src/com/android/launcher3/DeviceProfile.java +++ b/src/com/android/launcher3/DeviceProfile.java @@ -70,7 +70,7 @@ public class DeviceProfile { public int iconSizePx; public int iconTextSizePx; public int iconDrawablePaddingPx; - private final int iconDrawablePaddingOriginalPx; + public int iconDrawablePaddingOriginalPx; public int cellWidthPx; public int cellHeightPx; @@ -88,11 +88,8 @@ public class DeviceProfile { private int hotseatBarHeightPx; // All apps - private int allAppsCellWidthPx; - public int allAppsCellHeightPx; - private final int allAppsCellPaddingPx; - public int appsViewNumCols; - public int appsViewNumPredictiveCols; + public int allAppsNumCols; + public int allAppsNumPredictiveCols; public int allAppsButtonVisualSize; public final int allAppsIconSizePx; public final int allAppsIconTextSizePx; @@ -129,8 +126,6 @@ public class DeviceProfile { res.getDimensionPixelSize(R.dimen.dynamic_grid_page_indicator_height); defaultPageSpacingPx = res.getDimensionPixelSize(R.dimen.dynamic_grid_workspace_page_spacing); - allAppsCellPaddingPx = - res.getDimensionPixelSize(R.dimen.dynamic_grid_all_apps_cell_padding); overviewModeMinIconZoneHeightPx = res.getDimensionPixelSize(R.dimen.dynamic_grid_overview_min_icon_zone_height); overviewModeMaxIconZoneHeightPx = @@ -143,7 +138,6 @@ public class DeviceProfile { res.getInteger(R.integer.config_dynamic_grid_overview_icon_zone_percentage) / 100f; overviewModeScaleFactor = res.getInteger(R.integer.config_dynamic_grid_overview_scale_percentage) / 100f; - iconDrawablePaddingOriginalPx = res.getDimensionPixelSize(R.dimen.dynamic_grid_icon_drawable_padding); @@ -230,25 +224,22 @@ public class DeviceProfile { folderBackgroundOffset = -edgeMarginPx; folderIconSizePx = iconSizePx + 2 * -folderBackgroundOffset; - // All Apps - allAppsCellWidthPx = allAppsIconSizePx; - allAppsCellHeightPx = allAppsIconSizePx + drawablePadding + allAppsIconTextSizePx; - - int appsContainerViewWidthPx = res.getDimensionPixelSize(R.dimen.apps_container_width); - updateAppsViewNumCols(res, appsContainerViewWidthPx); + updateAppsViewNumCols(res, 0); } public boolean updateAppsViewNumCols(Resources res, int containerWidth) { int appsViewLeftMarginPx = - res.getDimensionPixelSize(R.dimen.apps_grid_view_start_margin); + res.getDimensionPixelSize(R.dimen.all_apps_grid_view_start_margin); + int allAppsCellPaddingPx = + res.getDimensionPixelSize(R.dimen.all_apps_icon_left_right_padding); int availableAppsWidthPx = (containerWidth > 0) ? containerWidth : availableWidthPx; int numAppsCols = (availableAppsWidthPx - appsViewLeftMarginPx) / - (allAppsCellWidthPx + 2 * allAppsCellPaddingPx); + (allAppsIconSizePx + 2 * allAppsCellPaddingPx); int numPredictiveAppCols = isPhone ? 4 : numAppsCols; - if ((numAppsCols != appsViewNumCols) || - (numPredictiveAppCols != appsViewNumPredictiveCols)) { - appsViewNumCols = numAppsCols; - appsViewNumPredictiveCols = numPredictiveAppCols; + if ((numAppsCols != allAppsNumCols) || + (numPredictiveAppCols != allAppsNumPredictiveCols)) { + allAppsNumCols = numAppsCols; + allAppsNumPredictiveCols = numPredictiveAppCols; return true; } return false; diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index c923c95826..5dd64e0e21 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -98,6 +98,7 @@ import android.widget.Toast; import com.android.launcher3.DropTarget.DragObject; import com.android.launcher3.PagedView.PageSwitchListener; import com.android.launcher3.accessibility.LauncherAccessibilityDelegate; +import com.android.launcher3.allapps.AllAppsContainerView; import com.android.launcher3.compat.AppWidgetManagerCompat; import com.android.launcher3.compat.LauncherActivityInfoCompat; import com.android.launcher3.compat.LauncherAppsCompat; @@ -272,7 +273,7 @@ public class Launcher extends Activity private SearchDropTargetBar mSearchDropTargetBar; // Main container view for the all apps screen. - @Thunk AppsContainerView mAppsView; + @Thunk AllAppsContainerView mAppsView; // Main container view and the model for the widget tray screen. @Thunk WidgetsContainerView mWidgetsView; @@ -1475,7 +1476,7 @@ public class Launcher extends Activity mDragLayer.findViewById(R.id.search_drop_target_bar); // Setup Apps - mAppsView = (AppsContainerView) findViewById(R.id.apps_view); + mAppsView = (AllAppsContainerView) findViewById(R.id.apps_view); if (isAllAppsSearchOverridden()) { mAppsView.hideHeaderBar(); } @@ -1524,8 +1525,6 @@ public class Launcher extends Activity * Creates a view representing a shortcut. * * @param info The data structure describing the shortcut. - * - * @return A View inflated from R.layout.application. */ View createShortcut(ShortcutInfo info) { return createShortcut((ViewGroup) mWorkspace.getChildAt(mWorkspace.getCurrentPage()), info); @@ -1540,7 +1539,7 @@ public class Launcher extends Activity * @return A View inflated from layoutResId. */ public View createShortcut(ViewGroup parent, ShortcutInfo info) { - BubbleTextView favorite = (BubbleTextView) mInflater.inflate(R.layout.application, + BubbleTextView favorite = (BubbleTextView) mInflater.inflate(R.layout.app_icon, parent, false); favorite.applyFromShortcutInfo(info, mIconCache); favorite.setCompoundDrawablePadding(mDeviceProfile.iconDrawablePaddingPx); @@ -1875,7 +1874,7 @@ public class Launcher extends Activity return mDragLayer; } - public AppsContainerView getAppsView() { + public AllAppsContainerView getAppsView() { return mAppsView; } @@ -3347,7 +3346,7 @@ public class Launcher extends Activity } } - protected void showWorkspace(boolean animated) { + public void showWorkspace(boolean animated) { showWorkspace(WorkspaceStateTransitionAnimation.SCROLL_TO_CURRENT_PAGE, animated, null, true); } @@ -4813,14 +4812,6 @@ public class Launcher extends Activity } } -interface LauncherTransitionable { - View getContent(); - void onLauncherTransitionPrepare(Launcher l, boolean animated, boolean toWorkspace); - void onLauncherTransitionStart(Launcher l, boolean animated, boolean toWorkspace); - void onLauncherTransitionStep(Launcher l, float t); - void onLauncherTransitionEnd(Launcher l, boolean animated, boolean toWorkspace); -} - interface DebugIntents { static final String DELETE_DATABASE = "com.android.launcher3.action.DELETE_DATABASE"; static final String MIGRATE_DATABASE = "com.android.launcher3.action.MIGRATE_DATABASE"; diff --git a/src/com/android/launcher3/LauncherStateTransitionAnimation.java b/src/com/android/launcher3/LauncherStateTransitionAnimation.java index ce13da66e2..f373fde2dd 100644 --- a/src/com/android/launcher3/LauncherStateTransitionAnimation.java +++ b/src/com/android/launcher3/LauncherStateTransitionAnimation.java @@ -23,14 +23,13 @@ import android.animation.ObjectAnimator; import android.animation.PropertyValuesHolder; import android.animation.TimeInterpolator; import android.annotation.SuppressLint; -import android.annotation.TargetApi; import android.content.res.Resources; -import android.os.Build; import android.util.Log; import android.view.View; import android.view.ViewAnimationUtils; import android.view.animation.AccelerateInterpolator; import android.view.animation.DecelerateInterpolator; +import com.android.launcher3.allapps.AllAppsContainerView; import com.android.launcher3.util.Thunk; import com.android.launcher3.widget.WidgetsContainerView; import java.util.HashMap; @@ -129,7 +128,7 @@ public class LauncherStateTransitionAnimation { * Starts an animation to the apps view. */ public void startAnimationToAllApps(final boolean animated) { - final AppsContainerView toView = mLauncher.getAppsView(); + final AllAppsContainerView toView = mLauncher.getAppsView(); PrivateTransitionCallbacks cb = new PrivateTransitionCallbacks() { private int[] mAllAppsToPanelDelta; @@ -233,9 +232,9 @@ public class LauncherStateTransitionAnimation { final boolean hideSearchBar, final PrivateTransitionCallbacks pCb) { final Resources res = mLauncher.getResources(); final boolean material = Utilities.isLmpOrAbove(); - final int revealDuration = res.getInteger(R.integer.config_appsCustomizeRevealTime); + final int revealDuration = res.getInteger(R.integer.config_overlayRevealTime); final int itemsAlphaStagger = - res.getInteger(R.integer.config_appsCustomizeItemsAlphaStagger); + res.getInteger(R.integer.config_overlayItemsAlphaStagger); final View allAppsButtonView = mLauncher.getAllAppsButton(); final View fromView = mLauncher.getWorkspace(); @@ -428,7 +427,7 @@ public class LauncherStateTransitionAnimation { private void startAnimationToWorkspaceFromAllApps(final Launcher.State fromState, final Workspace.State toWorkspaceState, final int toWorkspacePage, final boolean animated, final Runnable onCompleteRunnable) { - AppsContainerView appsView = mLauncher.getAppsView(); + AllAppsContainerView appsView = mLauncher.getAppsView(); PrivateTransitionCallbacks cb = new PrivateTransitionCallbacks() { int[] mAllAppsToPanelDelta; @@ -530,9 +529,9 @@ public class LauncherStateTransitionAnimation { final PrivateTransitionCallbacks pCb) { final Resources res = mLauncher.getResources(); final boolean material = Utilities.isLmpOrAbove(); - final int revealDuration = res.getInteger(R.integer.config_appsCustomizeRevealTime); + final int revealDuration = res.getInteger(R.integer.config_overlayRevealTime); final int itemsAlphaStagger = - res.getInteger(R.integer.config_appsCustomizeItemsAlphaStagger); + res.getInteger(R.integer.config_overlayItemsAlphaStagger); final View allAppsButtonView = mLauncher.getAllAppsButton(); final View toView = mLauncher.getWorkspace(); diff --git a/src/com/android/launcher3/LauncherTransitionable.java b/src/com/android/launcher3/LauncherTransitionable.java new file mode 100644 index 0000000000..9442abcdee --- /dev/null +++ b/src/com/android/launcher3/LauncherTransitionable.java @@ -0,0 +1,30 @@ +/* + * 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. + */ + +package com.android.launcher3; + +import android.view.View; + +/** + * An interface to get callbacks during a launcher transition. + */ +public interface LauncherTransitionable { + View getContent(); + void onLauncherTransitionPrepare(Launcher l, boolean animated, boolean toWorkspace); + void onLauncherTransitionStart(Launcher l, boolean animated, boolean toWorkspace); + void onLauncherTransitionStep(Launcher l, float t); + void onLauncherTransitionEnd(Launcher l, boolean animated, boolean toWorkspace); +} diff --git a/src/com/android/launcher3/WidgetPreviewLoader.java b/src/com/android/launcher3/WidgetPreviewLoader.java index 1cf3bc4695..e8cc486855 100644 --- a/src/com/android/launcher3/WidgetPreviewLoader.java +++ b/src/com/android/launcher3/WidgetPreviewLoader.java @@ -25,7 +25,6 @@ import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.AsyncTask; import android.os.Handler; -import android.os.Process; import android.util.Log; import android.util.LongSparseArray; import com.android.launcher3.compat.AppWidgetManagerCompat; @@ -34,7 +33,6 @@ import com.android.launcher3.compat.UserManagerCompat; import com.android.launcher3.util.ComponentKey; import com.android.launcher3.util.Thunk; import com.android.launcher3.widget.WidgetCell; -import junit.framework.Assert; import java.util.ArrayList; import java.util.Collections; diff --git a/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java b/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java index 42ba36ef6a..340066d645 100644 --- a/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java +++ b/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java @@ -163,9 +163,9 @@ public class WorkspaceStateTransitionAnimation { DeviceProfile grid = mLauncher.getDeviceProfile(); Resources res = launcher.getResources(); - mAllAppsTransitionTime = res.getInteger(R.integer.config_workspaceUnshrinkTime); + mAllAppsTransitionTime = res.getInteger(R.integer.config_allAppsTransitionTime); mOverviewTransitionTime = res.getInteger(R.integer.config_overviewTransitionTime); - mOverlayTransitionTime = res.getInteger(R.integer.config_appsCustomizeWorkspaceShrinkTime); + mOverlayTransitionTime = res.getInteger(R.integer.config_overlayTransitionTime); mSpringLoadedShrinkFactor = res.getInteger(R.integer.config_workspaceSpringLoadShrinkPercentage) / 100f; mWorkspaceScrimAlpha = res.getInteger(R.integer.config_workspaceScrimAlpha) / 100f; diff --git a/src/com/android/launcher3/AppsContainerView.java b/src/com/android/launcher3/allapps/AllAppsContainerView.java similarity index 92% rename from src/com/android/launcher3/AppsContainerView.java rename to src/com/android/launcher3/allapps/AllAppsContainerView.java index 3bfe26b568..60f9ab3471 100644 --- a/src/com/android/launcher3/AppsContainerView.java +++ b/src/com/android/launcher3/allapps/AllAppsContainerView.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.android.launcher3; +package com.android.launcher3.allapps; import android.annotation.SuppressLint; import android.annotation.TargetApi; @@ -22,6 +22,7 @@ import android.content.Context; import android.content.res.Resources; import android.graphics.Point; import android.graphics.Rect; +import android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; import android.graphics.drawable.InsetDrawable; import android.os.Build; @@ -40,7 +41,24 @@ import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputMethodManager; import android.widget.FrameLayout; import android.widget.TextView; - +import com.android.launcher3.AppInfo; +import com.android.launcher3.BaseContainerView; +import com.android.launcher3.BubbleTextView; +import com.android.launcher3.CellLayout; +import com.android.launcher3.CheckLongPressHelper; +import com.android.launcher3.DeleteDropTarget; +import com.android.launcher3.DeviceProfile; +import com.android.launcher3.DragSource; +import com.android.launcher3.DropTarget; +import com.android.launcher3.Folder; +import com.android.launcher3.Insettable; +import com.android.launcher3.ItemInfo; +import com.android.launcher3.Launcher; +import com.android.launcher3.LauncherAppState; +import com.android.launcher3.LauncherTransitionable; +import com.android.launcher3.R; +import com.android.launcher3.Utilities; +import com.android.launcher3.Workspace; import com.android.launcher3.util.Thunk; import java.util.List; @@ -52,6 +70,7 @@ import java.util.regex.Pattern; */ interface HeaderElevationController { void onScroll(int scrollY); + void updateBackgroundPadding(Drawable bg); void disable(); } @@ -62,8 +81,8 @@ interface HeaderElevationController { final class HeaderElevationControllerV16 implements HeaderElevationController { private final View mShadow; - private final float mScrollToElevation; + private final Rect mTmpRect = new Rect(); public HeaderElevationControllerV16(View header) { Resources res = header.getContext().getResources(); @@ -89,6 +108,15 @@ final class HeaderElevationControllerV16 implements HeaderElevationController { mShadow.setAlpha(elevationPct); } + @Override + public void updateBackgroundPadding(Drawable bg) { + bg.getPadding(mTmpRect); + FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) mShadow.getLayoutParams(); + lp.leftMargin = mTmpRect.left; + lp.rightMargin = mTmpRect.right; + mShadow.requestLayout(); + } + @Override public void disable() { ViewGroup parent = (ViewGroup) mShadow.getParent(); @@ -127,6 +155,11 @@ final class HeaderElevationControllerVL implements HeaderElevationController { } } + @Override + public void updateBackgroundPadding(Drawable bg) { + // Do nothing, the background padding on the header view is already applied + } + @Override public void disable() { } } @@ -134,9 +167,9 @@ final class HeaderElevationControllerVL implements HeaderElevationController { /** * The all apps view container. */ -public class AppsContainerView extends BaseContainerView implements DragSource, Insettable, +public class AllAppsContainerView extends BaseContainerView implements DragSource, Insettable, TextWatcher, TextView.OnEditorActionListener, LauncherTransitionable, - AlphabeticalAppsList.AdapterChangedCallback, AppsGridAdapter.PredictionBarSpacerCallbacks, + AlphabeticalAppsList.AdapterChangedCallback, AllAppsGridAdapter.PredictionBarSpacerCallbacks, View.OnTouchListener, View.OnClickListener, View.OnLongClickListener, ViewTreeObserver.OnPreDrawListener { @@ -155,18 +188,18 @@ public class AppsContainerView extends BaseContainerView implements DragSource, @Thunk Launcher mLauncher; @Thunk AlphabeticalAppsList mApps; private LayoutInflater mLayoutInflater; - private AppsGridAdapter mAdapter; + private AllAppsGridAdapter mAdapter; private RecyclerView.LayoutManager mLayoutManager; private RecyclerView.ItemDecoration mItemDecoration; private FrameLayout mContentView; - @Thunk AppsContainerRecyclerView mAppsRecyclerView; + @Thunk AllAppsRecyclerView mAppsRecyclerView; private ViewGroup mPredictionBarView; private View mHeaderView; private View mSearchBarContainerView; private View mSearchButtonView; private View mDismissSearchButtonView; - private AppsContainerSearchEditTextView mSearchBarEditView; + private AllAppsSearchEditView mSearchBarEditView; private HeaderElevationController mElevationController; @@ -188,15 +221,15 @@ public class AppsContainerView extends BaseContainerView implements DragSource, private CheckLongPressHelper mPredictionIconCheckForLongPress; private View mPredictionIconUnderTouch; - public AppsContainerView(Context context) { + public AllAppsContainerView(Context context) { this(context, null); } - public AppsContainerView(Context context, AttributeSet attrs) { + public AllAppsContainerView(Context context, AttributeSet attrs) { this(context, attrs, 0); } - public AppsContainerView(Context context, AttributeSet attrs, int defStyleAttr) { + public AllAppsContainerView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); LauncherAppState app = LauncherAppState.getInstance(); Resources res = context.getResources(); @@ -205,18 +238,19 @@ public class AppsContainerView extends BaseContainerView implements DragSource, DeviceProfile grid = mLauncher.getDeviceProfile(); mContainerInset = context.getResources().getDimensionPixelSize( - R.dimen.apps_container_inset); - mPredictionBarHeight = grid.allAppsCellHeightPx + - 2 * res.getDimensionPixelSize(R.dimen.apps_prediction_icon_top_bottom_padding); + R.dimen.all_apps_container_inset); + mPredictionBarHeight = grid.allAppsIconSizePx + grid.iconDrawablePaddingOriginalPx + + grid.allAppsIconTextSizePx + + 2 * res.getDimensionPixelSize(R.dimen.all_apps_prediction_icon_top_bottom_padding); mLayoutInflater = LayoutInflater.from(context); - mNumAppsPerRow = grid.appsViewNumCols; - mNumPredictedAppsPerRow = grid.appsViewNumPredictiveCols; + mNumAppsPerRow = grid.allAppsNumCols; + mNumPredictedAppsPerRow = grid.allAppsNumPredictiveCols; mApps = new AlphabeticalAppsList(context, mNumAppsPerRow, mNumPredictedAppsPerRow); mApps.setAdapterChangedCallback(this); - mAdapter = new AppsGridAdapter(context, mApps, mNumAppsPerRow, this, this, mLauncher, this); - mAdapter.setEmptySearchText(res.getString(R.string.loading_apps_message)); + mAdapter = new AllAppsGridAdapter(context, mApps, mNumAppsPerRow, this, this, mLauncher, this); + mAdapter.setEmptySearchText(res.getString(R.string.all_apps_loading_message)); mAdapter.setNumAppsPerRow(mNumAppsPerRow); mAdapter.setPredictionRowHeight(mPredictionBarHeight); mLayoutManager = mAdapter.getLayoutManager(); @@ -340,13 +374,13 @@ public class AppsContainerView extends BaseContainerView implements DragSource, mSearchBarContainerView = findViewById(R.id.app_search_container); mDismissSearchButtonView = mSearchBarContainerView.findViewById(R.id.dismiss_search_button); mDismissSearchButtonView.setOnClickListener(this); - mSearchBarEditView = (AppsContainerSearchEditTextView) findViewById(R.id.app_search_box); + mSearchBarEditView = (AllAppsSearchEditView) findViewById(R.id.apps_search_box); if (mSearchBarEditView != null) { mSearchBarEditView.addTextChangedListener(this); mSearchBarEditView.setOnEditorActionListener(this); if (DISMISS_SEARCH_ON_BACK) { mSearchBarEditView.setOnBackKeyListener( - new AppsContainerSearchEditTextView.OnBackKeyListener() { + new AllAppsSearchEditView.OnBackKeyListener() { @Override public void onBackKey() { // Only hide the search field if there is no query, or if there @@ -360,7 +394,7 @@ public class AppsContainerView extends BaseContainerView implements DragSource, }); } } - mAppsRecyclerView = (AppsContainerRecyclerView) findViewById(R.id.apps_list_view); + mAppsRecyclerView = (AllAppsRecyclerView) findViewById(R.id.apps_list_view); mAppsRecyclerView.setApps(mApps); mAppsRecyclerView.setNumAppsPerRow(mNumAppsPerRow, mNumPredictedAppsPerRow); mAppsRecyclerView.setPredictionBarHeight(mPredictionBarHeight); @@ -388,7 +422,7 @@ public class AppsContainerView extends BaseContainerView implements DragSource, } else { // Otherwise, inflate a new icon icon = (BubbleTextView) mLayoutInflater.inflate( - R.layout.apps_prediction_bar_icon_view, mPredictionBarView, false); + R.layout.all_apps_prediction_bar_icon, mPredictionBarView, false); icon.setFocusable(true); mPredictionBarView.addView(icon); } @@ -416,8 +450,8 @@ public class AppsContainerView extends BaseContainerView implements DragSource, LauncherAppState app = LauncherAppState.getInstance(); DeviceProfile grid = mLauncher.getDeviceProfile(); if (grid.updateAppsViewNumCols(getContext().getResources(), mFixedBounds.width())) { - mNumAppsPerRow = grid.appsViewNumCols; - mNumPredictedAppsPerRow = grid.appsViewNumPredictiveCols; + mNumAppsPerRow = grid.allAppsNumCols; + mNumPredictedAppsPerRow = grid.allAppsNumPredictiveCols; mAppsRecyclerView.setNumAppsPerRow(mNumAppsPerRow, mNumPredictedAppsPerRow); mAdapter.setNumAppsPerRow(mNumAppsPerRow); mApps.setNumAppsPerRow(mNumAppsPerRow, mNumPredictedAppsPerRow); @@ -493,6 +527,7 @@ public class AppsContainerView extends BaseContainerView implements DragSource, mContentView.setBackground(background); mAppsRecyclerView.updateBackgroundPadding(background); mAdapter.updateBackgroundPadding(background); + mElevationController.updateBackgroundPadding(background); getRevealView().setBackground(background.getConstantState().newDrawable()); } @@ -632,7 +667,7 @@ public class AppsContainerView extends BaseContainerView implements DragSource, if (queryText.isEmpty()) { mApps.setFilter(null); } else { - String formatStr = getResources().getString(R.string.apps_view_no_search_results); + String formatStr = getResources().getString(R.string.all_apps_no_search_results); mAdapter.setEmptySearchText(String.format(formatStr, queryText)); // Do an intersection of the words in the query and each title, and filter out all the @@ -679,7 +714,7 @@ public class AppsContainerView extends BaseContainerView implements DragSource, List items = mApps.getAdapterItems(); for (int i = 0; i < items.size(); i++) { AlphabeticalAppsList.AdapterItem item = items.get(i); - if (item.viewType == AppsGridAdapter.ICON_VIEW_TYPE) { + if (item.viewType == AllAppsGridAdapter.ICON_VIEW_TYPE) { mAppsRecyclerView.getChildAt(i).performClick(); getInputMethodManager().hideSoftInputFromWindow(getWindowToken(), 0); return true; diff --git a/src/com/android/launcher3/AppsGridAdapter.java b/src/com/android/launcher3/allapps/AllAppsGridAdapter.java similarity index 92% rename from src/com/android/launcher3/AppsGridAdapter.java rename to src/com/android/launcher3/allapps/AllAppsGridAdapter.java index a593a5715d..e010270ce6 100644 --- a/src/com/android/launcher3/AppsGridAdapter.java +++ b/src/com/android/launcher3/allapps/AllAppsGridAdapter.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.android.launcher3; +package com.android.launcher3.allapps; import android.content.Context; import android.content.res.Resources; @@ -29,6 +29,12 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; +import com.android.launcher3.AppInfo; +import com.android.launcher3.BubbleTextView; +import com.android.launcher3.DeviceProfile; +import com.android.launcher3.Launcher; +import com.android.launcher3.R; +import com.android.launcher3.Utilities; import com.android.launcher3.util.Thunk; import java.util.HashMap; @@ -38,7 +44,7 @@ import java.util.List; /** * The grid view adapter of all the apps. */ -class AppsGridAdapter extends RecyclerView.Adapter { +class AllAppsGridAdapter extends RecyclerView.Adapter { public static final String TAG = "AppsGridAdapter"; private static final boolean DEBUG = false; @@ -48,7 +54,7 @@ class AppsGridAdapter extends RecyclerView.Adapter { // A normal icon public static final int ICON_VIEW_TYPE = 1; // The message shown when there are no filtered results - public static final int EMPTY_VIEW_TYPE = 2; + public static final int EMPTY_SEARCH_VIEW_TYPE = 2; // The spacer used for the prediction bar public static final int PREDICTION_BAR_SPACER_TYPE = 3; @@ -88,7 +94,7 @@ class AppsGridAdapter extends RecyclerView.Adapter { return mAppsPerRow; } - if (mApps.getAdapterItems().get(position).viewType != AppsGridAdapter.ICON_VIEW_TYPE) { + if (mApps.getAdapterItems().get(position).viewType != AllAppsGridAdapter.ICON_VIEW_TYPE) { // Both the section breaks and predictive bar span the full width return mAppsPerRow; } else { @@ -255,7 +261,7 @@ class AppsGridAdapter extends RecyclerView.Adapter { private boolean shouldDrawItemDivider(ViewHolder holder, List items) { int pos = holder.getPosition(); - return items.get(pos).viewType == AppsGridAdapter.PREDICTION_BAR_SPACER_TYPE; + return items.get(pos).viewType == AllAppsGridAdapter.PREDICTION_BAR_SPACER_TYPE; } /** @@ -267,12 +273,12 @@ class AppsGridAdapter extends RecyclerView.Adapter { AlphabeticalAppsList.AdapterItem item = items.get(pos); // Ensure it's an icon - if (item.viewType != AppsGridAdapter.ICON_VIEW_TYPE) { + if (item.viewType != AllAppsGridAdapter.ICON_VIEW_TYPE) { return false; } // Draw the section header for the first item in each section return (childIndex == 0) || - (items.get(pos - 1).viewType == AppsGridAdapter.SECTION_BREAK_VIEW_TYPE); + (items.get(pos - 1).viewType == AllAppsGridAdapter.SECTION_BREAK_VIEW_TYPE); } } @@ -299,7 +305,7 @@ class AppsGridAdapter extends RecyclerView.Adapter { @Thunk Paint mSectionTextPaint; @Thunk Paint mPredictedAppsDividerPaint; - public AppsGridAdapter(Context context, AlphabeticalAppsList apps, int appsPerRow, + public AllAppsGridAdapter(Context context, AlphabeticalAppsList apps, int appsPerRow, PredictionBarSpacerCallbacks pbCb, View.OnTouchListener touchListener, View.OnClickListener iconClickListener, View.OnLongClickListener iconLongClickListener) { Resources res = context.getResources(); @@ -316,14 +322,14 @@ class AppsGridAdapter extends RecyclerView.Adapter { mTouchListener = touchListener; mIconClickListener = iconClickListener; mIconLongClickListener = iconLongClickListener; - mStartMargin = res.getDimensionPixelSize(R.dimen.apps_grid_view_start_margin); - mSectionHeaderOffset = res.getDimensionPixelSize(R.dimen.apps_grid_section_y_offset); - mPaddingStart = res.getDimensionPixelSize(R.dimen.apps_container_inset); + mStartMargin = res.getDimensionPixelSize(R.dimen.all_apps_grid_view_start_margin); + mSectionHeaderOffset = res.getDimensionPixelSize(R.dimen.all_apps_grid_section_y_offset); + mPaddingStart = res.getDimensionPixelSize(R.dimen.all_apps_container_inset); mSectionTextPaint = new Paint(); mSectionTextPaint.setTextSize(res.getDimensionPixelSize( - R.dimen.apps_view_section_text_size)); - mSectionTextPaint.setColor(res.getColor(R.color.apps_view_section_text_color)); + R.dimen.all_apps_grid_section_text_size)); + mSectionTextPaint.setColor(res.getColor(R.color.all_apps_grid_section_text_color)); mSectionTextPaint.setAntiAlias(true); mPredictedAppsDividerPaint = new Paint(); @@ -394,8 +400,8 @@ class AppsGridAdapter extends RecyclerView.Adapter { @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { switch (viewType) { - case EMPTY_VIEW_TYPE: - return new ViewHolder(mLayoutInflater.inflate(R.layout.apps_empty_view, parent, + case EMPTY_SEARCH_VIEW_TYPE: + return new ViewHolder(mLayoutInflater.inflate(R.layout.all_apps_empty_search, parent, false)); case SECTION_BREAK_VIEW_TYPE: return new ViewHolder(new View(parent.getContext())); @@ -408,7 +414,7 @@ class AppsGridAdapter extends RecyclerView.Adapter { return new ViewHolder(v); case ICON_VIEW_TYPE: BubbleTextView icon = (BubbleTextView) mLayoutInflater.inflate( - R.layout.apps_grid_icon_view, parent, false); + R.layout.all_apps_icon, parent, false); icon.setOnTouchListener(mTouchListener); icon.setOnClickListener(mIconClickListener); icon.setOnLongClickListener(mIconLongClickListener); @@ -437,7 +443,7 @@ class AppsGridAdapter extends RecyclerView.Adapter { } }); break; - case EMPTY_VIEW_TYPE: + case EMPTY_SEARCH_VIEW_TYPE: TextView emptyViewText = (TextView) holder.mContent.findViewById(R.id.empty_text); emptyViewText.setText(mEmptySearchText); break; @@ -456,7 +462,7 @@ class AppsGridAdapter extends RecyclerView.Adapter { @Override public int getItemViewType(int position) { if (mApps.hasNoFilteredResults()) { - return EMPTY_VIEW_TYPE; + return EMPTY_SEARCH_VIEW_TYPE; } AlphabeticalAppsList.AdapterItem item = mApps.getAdapterItems().get(position); diff --git a/src/com/android/launcher3/AppsContainerRecyclerView.java b/src/com/android/launcher3/allapps/AllAppsRecyclerView.java similarity index 92% rename from src/com/android/launcher3/AppsContainerRecyclerView.java rename to src/com/android/launcher3/allapps/AllAppsRecyclerView.java index 109be7e028..e95fa325a6 100644 --- a/src/com/android/launcher3/AppsContainerRecyclerView.java +++ b/src/com/android/launcher3/allapps/AllAppsRecyclerView.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.android.launcher3; +package com.android.launcher3.allapps; import android.animation.ObjectAnimator; import android.content.Context; @@ -29,6 +29,11 @@ import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.view.ViewConfiguration; +import com.android.launcher3.BaseRecyclerView; +import com.android.launcher3.DeviceProfile; +import com.android.launcher3.Launcher; +import com.android.launcher3.R; +import com.android.launcher3.Utilities; import java.util.List; @@ -36,7 +41,7 @@ import java.util.List; * A RecyclerView with custom fastscroll support. This is the main container for the all apps * icons. */ -public class AppsContainerRecyclerView extends BaseContainerRecyclerView { +public class AllAppsRecyclerView extends BaseRecyclerView { /** * The current scroll state of the recycler view. We use this in updateVerticalScrollbarBounds() @@ -82,38 +87,38 @@ public class AppsContainerRecyclerView extends BaseContainerRecyclerView { private Launcher mLauncher; - public AppsContainerRecyclerView(Context context) { + public AllAppsRecyclerView(Context context) { this(context, null); } - public AppsContainerRecyclerView(Context context, AttributeSet attrs) { + public AllAppsRecyclerView(Context context, AttributeSet attrs) { this(context, attrs, 0); } - public AppsContainerRecyclerView(Context context, AttributeSet attrs, int defStyleAttr) { + public AllAppsRecyclerView(Context context, AttributeSet attrs, int defStyleAttr) { this(context, attrs, defStyleAttr, 0); } - public AppsContainerRecyclerView(Context context, AttributeSet attrs, int defStyleAttr, + public AllAppsRecyclerView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr); mLauncher = (Launcher) context; Resources res = context.getResources(); - int fastScrollerSize = res.getDimensionPixelSize(R.dimen.apps_view_fast_scroll_popup_size); - mScrollbar = res.getDrawable(R.drawable.apps_list_scrollbar_thumb); - mFastScrollerBg = res.getDrawable(R.drawable.apps_list_fastscroll_bg); + int fastScrollerSize = res.getDimensionPixelSize(R.dimen.all_apps_fast_scroll_popup_size); + mScrollbar = res.getDrawable(R.drawable.all_apps_scrollbar_thumb); + mFastScrollerBg = res.getDrawable(R.drawable.all_apps_fastscroll_bg); mFastScrollerBg.setBounds(0, 0, fastScrollerSize, fastScrollerSize); mFastScrollTextPaint = new Paint(); mFastScrollTextPaint.setColor(Color.WHITE); mFastScrollTextPaint.setAntiAlias(true); mFastScrollTextPaint.setTextSize(res.getDimensionPixelSize( - R.dimen.apps_view_fast_scroll_text_size)); - mScrollbarWidth = res.getDimensionPixelSize(R.dimen.apps_view_fast_scroll_bar_width); + R.dimen.all_apps_fast_scroll_text_size)); + mScrollbarWidth = res.getDimensionPixelSize(R.dimen.all_apps_fast_scroll_bar_width); mScrollbarMinHeight = - res.getDimensionPixelSize(R.dimen.apps_view_fast_scroll_bar_min_height); + res.getDimensionPixelSize(R.dimen.all_apps_fast_scroll_bar_min_height); mScrollbarInset = - res.getDimensionPixelSize(R.dimen.apps_view_fast_scroll_scrubber_touch_inset); + res.getDimensionPixelSize(R.dimen.all_apps_fast_scroll_scrubber_touch_inset); setFastScrollerAlpha(getFastScrollerAlpha()); setOverScrollMode(View.OVER_SCROLL_NEVER); } @@ -135,10 +140,10 @@ public class AppsContainerRecyclerView extends BaseContainerRecyclerView { DeviceProfile grid = mLauncher.getDeviceProfile(); RecyclerView.RecycledViewPool pool = getRecycledViewPool(); int approxRows = (int) Math.ceil(grid.availableHeightPx / grid.allAppsIconSizePx); - pool.setMaxRecycledViews(AppsGridAdapter.PREDICTION_BAR_SPACER_TYPE, 1); - pool.setMaxRecycledViews(AppsGridAdapter.EMPTY_VIEW_TYPE, 1); - pool.setMaxRecycledViews(AppsGridAdapter.ICON_VIEW_TYPE, approxRows * mNumAppsPerRow); - pool.setMaxRecycledViews(AppsGridAdapter.SECTION_BREAK_VIEW_TYPE, approxRows); + pool.setMaxRecycledViews(AllAppsGridAdapter.PREDICTION_BAR_SPACER_TYPE, 1); + pool.setMaxRecycledViews(AllAppsGridAdapter.EMPTY_SEARCH_VIEW_TYPE, 1); + pool.setMaxRecycledViews(AllAppsGridAdapter.ICON_VIEW_TYPE, approxRows * mNumAppsPerRow); + pool.setMaxRecycledViews(AllAppsGridAdapter.SECTION_BREAK_VIEW_TYPE, approxRows); } public void updateBackgroundPadding(Drawable background) { @@ -511,7 +516,7 @@ public class AppsContainerRecyclerView extends BaseContainerRecyclerView { int position = getChildPosition(child); if (position != NO_POSITION) { AlphabeticalAppsList.AdapterItem item = items.get(position); - if (item.viewType == AppsGridAdapter.ICON_VIEW_TYPE) { + if (item.viewType == AllAppsGridAdapter.ICON_VIEW_TYPE) { stateOut.rowIndex = findRowForAppIndex(item.appIndex); stateOut.rowTopOffset = getLayoutManager().getDecoratedTop(child); stateOut.rowHeight = child.getHeight(); diff --git a/src/com/android/launcher3/AppsRecyclerViewContainer.java b/src/com/android/launcher3/allapps/AllAppsRecyclerViewContainerView.java similarity index 72% rename from src/com/android/launcher3/AppsRecyclerViewContainer.java rename to src/com/android/launcher3/allapps/AllAppsRecyclerViewContainerView.java index 6411bace4e..8a8afde51c 100644 --- a/src/com/android/launcher3/AppsRecyclerViewContainer.java +++ b/src/com/android/launcher3/allapps/AllAppsRecyclerViewContainerView.java @@ -13,29 +13,37 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.android.launcher3; +package com.android.launcher3.allapps; import android.content.Context; import android.graphics.Bitmap; import android.util.AttributeSet; import android.view.ViewGroup; import android.widget.FrameLayout; - +import com.android.launcher3.BubbleTextView; import com.android.launcher3.BubbleTextView.BubbleTextShadowHandler; +import com.android.launcher3.ClickShadowView; +import com.android.launcher3.DeviceProfile; +import com.android.launcher3.Launcher; -public class AppsRecyclerViewContainer extends FrameLayout implements BubbleTextShadowHandler { +/** + * A container for RecyclerView to allow for the click shadow view to be shown behind an icon that + * is launching. + */ +public class AllAppsRecyclerViewContainerView extends FrameLayout + implements BubbleTextShadowHandler { private final ClickShadowView mTouchFeedbackView; - public AppsRecyclerViewContainer(Context context) { + public AllAppsRecyclerViewContainerView(Context context) { this(context, null); } - public AppsRecyclerViewContainer(Context context, AttributeSet attrs) { + public AllAppsRecyclerViewContainerView(Context context, AttributeSet attrs) { this(context, attrs, 0); } - public AppsRecyclerViewContainer(Context context, AttributeSet attrs, int defStyleAttr) { + public AllAppsRecyclerViewContainerView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); Launcher launcher = (Launcher) context; diff --git a/src/com/android/launcher3/AppsContainerSearchEditTextView.java b/src/com/android/launcher3/allapps/AllAppsSearchEditView.java similarity index 83% rename from src/com/android/launcher3/AppsContainerSearchEditTextView.java rename to src/com/android/launcher3/allapps/AllAppsSearchEditView.java index c688237b24..b7dcd66ed2 100644 --- a/src/com/android/launcher3/AppsContainerSearchEditTextView.java +++ b/src/com/android/launcher3/allapps/AllAppsSearchEditView.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.android.launcher3; +package com.android.launcher3.allapps; import android.content.Context; import android.util.AttributeSet; @@ -24,7 +24,7 @@ import android.widget.EditText; /** * The edit text for the search container */ -public class AppsContainerSearchEditTextView extends EditText { +public class AllAppsSearchEditView extends EditText { /** * Implemented by listeners of the back key. @@ -35,15 +35,15 @@ public class AppsContainerSearchEditTextView extends EditText { private OnBackKeyListener mBackKeyListener; - public AppsContainerSearchEditTextView(Context context) { + public AllAppsSearchEditView(Context context) { this(context, null); } - public AppsContainerSearchEditTextView(Context context, AttributeSet attrs) { + public AllAppsSearchEditView(Context context, AttributeSet attrs) { this(context, attrs, 0); } - public AppsContainerSearchEditTextView(Context context, AttributeSet attrs, int defStyleAttr) { + public AllAppsSearchEditView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } diff --git a/src/com/android/launcher3/AlphabeticalAppsList.java b/src/com/android/launcher3/allapps/AlphabeticalAppsList.java similarity index 97% rename from src/com/android/launcher3/AlphabeticalAppsList.java rename to src/com/android/launcher3/allapps/AlphabeticalAppsList.java index 623e4aa73f..3d1503d467 100644 --- a/src/com/android/launcher3/AlphabeticalAppsList.java +++ b/src/com/android/launcher3/allapps/AlphabeticalAppsList.java @@ -1,9 +1,12 @@ -package com.android.launcher3; +package com.android.launcher3.allapps; import android.content.ComponentName; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.util.Log; +import com.android.launcher3.AppInfo; +import com.android.launcher3.DeviceProfile; +import com.android.launcher3.Launcher; import com.android.launcher3.compat.AlphabeticIndexCompat; import com.android.launcher3.model.AppNameComparator; @@ -81,7 +84,7 @@ public class AlphabeticalAppsList { public static AdapterItem asSectionBreak(int pos, SectionInfo section) { AdapterItem item = new AdapterItem(); - item.viewType = AppsGridAdapter.SECTION_BREAK_VIEW_TYPE; + item.viewType = AllAppsGridAdapter.SECTION_BREAK_VIEW_TYPE; item.position = pos; item.sectionInfo = section; section.sectionBreakItem = item; @@ -90,7 +93,7 @@ public class AlphabeticalAppsList { public static AdapterItem asPredictionBarSpacer(int pos) { AdapterItem item = new AdapterItem(); - item.viewType = AppsGridAdapter.PREDICTION_BAR_SPACER_TYPE; + item.viewType = AllAppsGridAdapter.PREDICTION_BAR_SPACER_TYPE; item.position = pos; return item; } @@ -98,7 +101,7 @@ public class AlphabeticalAppsList { public static AdapterItem asApp(int pos, SectionInfo section, String sectionName, int sectionAppIndex, AppInfo appInfo, int appIndex) { AdapterItem item = new AdapterItem(); - item.viewType = AppsGridAdapter.ICON_VIEW_TYPE; + item.viewType = AllAppsGridAdapter.ICON_VIEW_TYPE; item.position = pos; item.sectionInfo = section; item.sectionName = sectionName; @@ -516,7 +519,7 @@ public class AlphabeticalAppsList { */ private void mergeSections() { // Go through each section and try and merge some of the sections - if (AppsContainerView.GRID_MERGE_SECTIONS && !hasFilter()) { + if (AllAppsContainerView.GRID_MERGE_SECTIONS && !hasFilter()) { int sectionAppCount = 0; for (int i = 0; i < mSections.size(); i++) { SectionInfo section = mSections.get(i); diff --git a/src/com/android/launcher3/widget/WidgetsContainerRecyclerView.java b/src/com/android/launcher3/widget/WidgetsRecyclerView.java similarity index 67% rename from src/com/android/launcher3/widget/WidgetsContainerRecyclerView.java rename to src/com/android/launcher3/widget/WidgetsRecyclerView.java index 6f15324c15..31ef5d6fc4 100644 --- a/src/com/android/launcher3/widget/WidgetsContainerRecyclerView.java +++ b/src/com/android/launcher3/widget/WidgetsRecyclerView.java @@ -18,22 +18,22 @@ package com.android.launcher3.widget; import android.content.Context; import android.util.AttributeSet; -import com.android.launcher3.BaseContainerRecyclerView; +import com.android.launcher3.BaseRecyclerView; /** - * The widgets recycler view container. + * The widgets recycler view. */ -public class WidgetsContainerRecyclerView extends BaseContainerRecyclerView { +public class WidgetsRecyclerView extends BaseRecyclerView { - public WidgetsContainerRecyclerView(Context context) { + public WidgetsRecyclerView(Context context) { this(context, null); } - public WidgetsContainerRecyclerView(Context context, AttributeSet attrs) { + public WidgetsRecyclerView(Context context, AttributeSet attrs) { this(context, attrs, 0); } - public WidgetsContainerRecyclerView(Context context, AttributeSet attrs, int defStyleAttr) { + public WidgetsRecyclerView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); }