summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2018-01-22 14:37:09 -0800
committerSunny Goyal <sunnygoyal@google.com>2018-01-23 14:31:26 -0800
commitcfb630f8de1df7465c83487fa1437f70930414f6 (patch)
tree056a6151a1851334addf8670ea0fe86b6d4042f2
parentaa6b1117b278a8da629cb13ab27e0fe4e539c4f7 (diff)
downloadandroid_packages_apps_Trebuchet-cfb630f8de1df7465c83487fa1437f70930414f6.tar.gz
android_packages_apps_Trebuchet-cfb630f8de1df7465c83487fa1437f70930414f6.tar.bz2
android_packages_apps_Trebuchet-cfb630f8de1df7465c83487fa1437f70930414f6.zip
Using a single launcher layout for all configurations
Bug: 71709920 Change-Id: Ib23112bc1636007cb41e1919a855bbf5298884b6
-rw-r--r--res/layout-land/launcher.xml80
-rw-r--r--res/layout-sw720dp/launcher.xml77
-rw-r--r--res/layout/launcher.xml (renamed from res/layout-port/launcher.xml)39
-rw-r--r--res/layout/page_indicator.xml21
-rw-r--r--src/com/android/launcher3/pageindicators/PageIndicatorLandscape.java86
-rw-r--r--src/com/android/launcher3/pageindicators/WorkspacePageIndicator.java (renamed from src/com/android/launcher3/pageindicators/PageIndicatorLine.java)105
6 files changed, 100 insertions, 308 deletions
diff --git a/res/layout-land/launcher.xml b/res/layout-land/launcher.xml
deleted file mode 100644
index bcaba816e..000000000
--- a/res/layout-land/launcher.xml
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2007 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.
--->
-
-<!-- Full screen view projects under the status bar and contains the background -->
-<com.android.launcher3.LauncherRootView
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:launcher="http://schemas.android.com/apk/res-auto"
- android:id="@+id/launcher"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="?attr/workspaceStatusBarScrim"
- android:fitsSystemWindows="true">
-
- <com.android.launcher3.dragndrop.DragLayer
- android:id="@+id/drag_layer"
- android:clipChildren="false"
- android:clipToPadding="false"
- android:importantForAccessibility="no"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <!-- The workspace contains 5 screens of cells -->
- <!-- DO NOT CHANGE THE ID -->
- <com.android.launcher3.Workspace
- android:theme="@style/HomeScreenElementTheme"
- android:id="@+id/workspace"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_gravity="center"
- launcher:pageIndicator="@id/page_indicator" />
-
- <com.android.launcher3.pageindicators.PageIndicatorLandscape
- android:id="@+id/page_indicator"
- android:theme="@style/HomeScreenElementTheme"
- android:layout_width="@dimen/dynamic_grid_min_page_indicator_size"
- android:layout_height="@dimen/dynamic_grid_min_page_indicator_size"
- android:layout_gravity="bottom|left"
- android:background="@drawable/all_apps_handle_landscape" />
-
- <include layout="@layout/overview_panel"
- android:id="@+id/overview_panel"
- android:visibility="gone" />
-
- <com.android.launcher3.views.AllAppsScrim
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:id="@+id/all_apps_scrim" />
-
- <!-- DO NOT CHANGE THE ID -->
- <include layout="@layout/hotseat"
- android:id="@+id/hotseat"
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
-
- <include
- android:id="@+id/drop_target_bar"
- layout="@layout/drop_target_bar" />
-
- <include layout="@layout/all_apps"
- android:id="@+id/apps_view"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:visibility="invisible" />
-
- </com.android.launcher3.dragndrop.DragLayer>
-
-</com.android.launcher3.LauncherRootView>
diff --git a/res/layout-sw720dp/launcher.xml b/res/layout-sw720dp/launcher.xml
deleted file mode 100644
index fa1a100f7..000000000
--- a/res/layout-sw720dp/launcher.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2007 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.
--->
-
-<!-- Full screen view projects under the status bar and contains the background -->
-<com.android.launcher3.LauncherRootView
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:launcher="http://schemas.android.com/apk/res-auto"
- android:id="@+id/launcher"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="?attr/workspaceStatusBarScrim"
- android:fitsSystemWindows="true">
-
- <com.android.launcher3.dragndrop.DragLayer
- android:id="@+id/drag_layer"
- android:clipChildren="false"
- android:clipToPadding="false"
- android:importantForAccessibility="no"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <!-- The workspace contains 5 screens of cells -->
- <!-- DO NOT CHANGE THE ID -->
- <com.android.launcher3.Workspace
- android:theme="@style/HomeScreenElementTheme"
- android:layout_gravity="center"
- android:id="@+id/workspace"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- launcher:pageIndicator="@id/page_indicator">
- </com.android.launcher3.Workspace>
-
- <include layout="@layout/overview_panel"
- android:id="@+id/overview_panel"
- android:visibility="gone" />
-
- <com.android.launcher3.views.AllAppsScrim
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:id="@+id/all_apps_scrim" />
-
- <!-- DO NOT CHANGE THE ID -->
- <include layout="@layout/hotseat"
- android:id="@+id/hotseat"
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
-
- <include
- android:id="@+id/drop_target_bar"
- layout="@layout/drop_target_bar" />
-
- <!-- Keep these behind the workspace so that they are not visible when
- we go into AllApps -->
- <include layout="@layout/page_indicator"
- android:id="@+id/page_indicator" />
-
- <include layout="@layout/all_apps"
- android:id="@+id/apps_view"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:visibility="invisible" />
- </com.android.launcher3.dragndrop.DragLayer>
-
-</com.android.launcher3.LauncherRootView>
diff --git a/res/layout-port/launcher.xml b/res/layout/launcher.xml
index eb9c34c52..314359b8b 100644
--- a/res/layout-port/launcher.xml
+++ b/res/layout/launcher.xml
@@ -1,5 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2007 The Android Open Source Project
+<?xml version="1.0" encoding="utf-8"?><!-- Copyright (C) 2007 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.
@@ -13,12 +12,9 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-
-<!-- Full screen view projects under the status bar and contains the background -->
<com.android.launcher3.LauncherRootView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:launcher="http://schemas.android.com/apk/res-auto"
-
android:id="@+id/launcher"
android:layout_width="match_parent"
android:layout_height="match_parent"
@@ -27,49 +23,54 @@
<com.android.launcher3.dragndrop.DragLayer
android:id="@+id/drag_layer"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
android:clipChildren="false"
- android:importantForAccessibility="no"
android:clipToPadding="false"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
+ android:importantForAccessibility="no">
<!-- The workspace contains 5 screens of cells -->
<!-- DO NOT CHANGE THE ID -->
<com.android.launcher3.Workspace
- android:theme="@style/HomeScreenElementTheme"
android:id="@+id/workspace"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
- launcher:pageIndicator="@+id/page_indicator">
- </com.android.launcher3.Workspace>
+ android:theme="@style/HomeScreenElementTheme"
+ launcher:pageIndicator="@+id/page_indicator" />
- <include layout="@layout/overview_panel"
+ <include
android:id="@+id/overview_panel"
+ layout="@layout/overview_panel"
android:visibility="gone" />
<com.android.launcher3.views.AllAppsScrim
+ android:id="@+id/all_apps_scrim"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:id="@+id/all_apps_scrim" />
+ android:layout_height="match_parent" />
<!-- DO NOT CHANGE THE ID -->
- <include layout="@layout/hotseat"
+ <include
android:id="@+id/hotseat"
+ layout="@layout/hotseat"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!-- Keep these behind the workspace so that they are not visible when
- we go into AllApps -->
- <include layout="@layout/page_indicator"
- android:id="@+id/page_indicator" />
+ we go into AllApps -->
+ <com.android.launcher3.pageindicators.WorkspacePageIndicator
+ android:id="@+id/page_indicator"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/dynamic_grid_min_page_indicator_size"
+ android:theme="@style/HomeScreenElementTheme" />
<include
android:id="@+id/drop_target_bar"
layout="@layout/drop_target_bar" />
- <include layout="@layout/all_apps"
+ <include
android:id="@+id/apps_view"
+ layout="@layout/all_apps"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="invisible" />
diff --git a/res/layout/page_indicator.xml b/res/layout/page_indicator.xml
deleted file mode 100644
index 7de0cded5..000000000
--- a/res/layout/page_indicator.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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.
--->
-
-<com.android.launcher3.pageindicators.PageIndicatorLine
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:theme="@style/HomeScreenElementTheme"
- android:layout_width="match_parent"
- android:layout_height="@dimen/dynamic_grid_min_page_indicator_size" />
diff --git a/src/com/android/launcher3/pageindicators/PageIndicatorLandscape.java b/src/com/android/launcher3/pageindicators/PageIndicatorLandscape.java
deleted file mode 100644
index d76998a43..000000000
--- a/src/com/android/launcher3/pageindicators/PageIndicatorLandscape.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * 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.
- */
-package com.android.launcher3.pageindicators;
-
-import static com.android.launcher3.LauncherState.ALL_APPS;
-
-import android.content.Context;
-import android.graphics.Rect;
-import android.util.AttributeSet;
-import android.view.Gravity;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.ViewGroup.MarginLayoutParams;
-import android.widget.FrameLayout;
-
-import com.android.launcher3.DeviceProfile;
-import com.android.launcher3.Insettable;
-import com.android.launcher3.Launcher;
-import com.android.launcher3.userevent.nano.LauncherLogProto.Action;
-import com.android.launcher3.userevent.nano.LauncherLogProto.ControlType;
-
-/**
- * Simply draws the caret drawable bottom-right aligned in the view. This ensures that we can have
- * a view with as large an area as we want (for touching) while maintaining a caret of size
- * all_apps_caret_size. Used only for the landscape layout.
- */
-public class PageIndicatorLandscape extends PageIndicator implements OnClickListener, Insettable {
- // all apps pull up handle drawable.
-
- private final Launcher mLauncher;
-
- public PageIndicatorLandscape(Context context) {
- this(context, null);
- }
-
- public PageIndicatorLandscape(Context context, AttributeSet attrs) {
- this(context, attrs, 0);
- }
-
- public PageIndicatorLandscape(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- setOnClickListener(this);
- mLauncher = Launcher.getLauncher(context);
- setOnFocusChangeListener(mLauncher.mFocusHandler);
- }
-
- @Override
- public void onClick(View view) {
- Launcher l = Launcher.getLauncher(getContext());
- if (!l.isInState(ALL_APPS)) {
- l.getUserEventDispatcher().logActionOnControl(
- Action.Touch.TAP, ControlType.ALL_APPS_BUTTON);
- l.getStateManager().goToState(ALL_APPS);
- }
- }
-
- @Override
- public void setInsets(Rect insets) {
- FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) getLayoutParams();
- DeviceProfile grid = mLauncher.getDeviceProfile();
- if (insets.left > insets.right) {
- lp.leftMargin = grid.hotseatBarSidePaddingPx;
- lp.rightMargin = insets.right;
- lp.gravity = Gravity.RIGHT | Gravity.BOTTOM;
- } else {
- lp.leftMargin = insets.left;
- lp.rightMargin = grid.hotseatBarSidePaddingPx;
- lp.gravity = Gravity.LEFT | Gravity.BOTTOM;
- }
- lp.bottomMargin = grid.workspacePadding.bottom;
- setLayoutParams(lp);
- }
-}
diff --git a/src/com/android/launcher3/pageindicators/PageIndicatorLine.java b/src/com/android/launcher3/pageindicators/WorkspacePageIndicator.java
index 8c9642ccd..f3b0d6126 100644
--- a/src/com/android/launcher3/pageindicators/PageIndicatorLine.java
+++ b/src/com/android/launcher3/pageindicators/WorkspacePageIndicator.java
@@ -1,5 +1,9 @@
package com.android.launcher3.pageindicators;
+import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
+
+import static com.android.launcher3.LauncherState.ALL_APPS;
+
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
@@ -15,6 +19,8 @@ import android.os.Looper;
import android.util.AttributeSet;
import android.util.Property;
import android.view.Gravity;
+import android.view.View;
+import android.view.View.OnClickListener;
import android.view.ViewConfiguration;
import android.widget.FrameLayout;
@@ -24,13 +30,17 @@ import com.android.launcher3.Launcher;
import com.android.launcher3.R;
import com.android.launcher3.Utilities;
import com.android.launcher3.dynamicui.WallpaperColorInfo;
+import com.android.launcher3.userevent.nano.LauncherLogProto.Action;
+import com.android.launcher3.userevent.nano.LauncherLogProto.ControlType;
/**
- * A PageIndicator that briefly shows a fraction of a line when moving between pages.
+ * A PageIndicator that briefly shows a fraction of a line when moving between pages in
+ * portrait mode. In Landscape simply draws the caret drawable bottom-corner aligned in
+ * the drag-layer.
*
* The fraction is 1 / number of pages and the position is based on the progress of the page scroll.
*/
-public class PageIndicatorLine extends PageIndicator implements Insettable {
+public class WorkspacePageIndicator extends PageIndicator implements Insettable, OnClickListener {
private static final int LINE_ANIMATE_DURATION = ViewConfiguration.getScrollBarFadeDuration();
private static final int LINE_FADE_DELAY = ViewConfiguration.getScrollDefaultDelay();
@@ -59,59 +69,61 @@ public class PageIndicatorLine extends PageIndicator implements Insettable {
private Paint mLinePaint;
private final int mLineHeight;
- private static final Property<PageIndicatorLine, Integer> PAINT_ALPHA
- = new Property<PageIndicatorLine, Integer>(Integer.class, "paint_alpha") {
+ private boolean mIsLandscapeUi;
+
+ private static final Property<WorkspacePageIndicator, Integer> PAINT_ALPHA
+ = new Property<WorkspacePageIndicator, Integer>(Integer.class, "paint_alpha") {
@Override
- public Integer get(PageIndicatorLine obj) {
+ public Integer get(WorkspacePageIndicator obj) {
return obj.mLinePaint.getAlpha();
}
@Override
- public void set(PageIndicatorLine obj, Integer alpha) {
+ public void set(WorkspacePageIndicator obj, Integer alpha) {
obj.mLinePaint.setAlpha(alpha);
- obj.invalidate();
+ obj.invalidateIfPortrait();
}
};
- private static final Property<PageIndicatorLine, Float> NUM_PAGES
- = new Property<PageIndicatorLine, Float>(Float.class, "num_pages") {
+ private static final Property<WorkspacePageIndicator, Float> NUM_PAGES
+ = new Property<WorkspacePageIndicator, Float>(Float.class, "num_pages") {
@Override
- public Float get(PageIndicatorLine obj) {
+ public Float get(WorkspacePageIndicator obj) {
return obj.mNumPagesFloat;
}
@Override
- public void set(PageIndicatorLine obj, Float numPages) {
+ public void set(WorkspacePageIndicator obj, Float numPages) {
obj.mNumPagesFloat = numPages;
- obj.invalidate();
+ obj.invalidateIfPortrait();
}
};
- private static final Property<PageIndicatorLine, Integer> TOTAL_SCROLL
- = new Property<PageIndicatorLine, Integer>(Integer.class, "total_scroll") {
+ private static final Property<WorkspacePageIndicator, Integer> TOTAL_SCROLL
+ = new Property<WorkspacePageIndicator, Integer>(Integer.class, "total_scroll") {
@Override
- public Integer get(PageIndicatorLine obj) {
+ public Integer get(WorkspacePageIndicator obj) {
return obj.mTotalScroll;
}
@Override
- public void set(PageIndicatorLine obj, Integer totalScroll) {
+ public void set(WorkspacePageIndicator obj, Integer totalScroll) {
obj.mTotalScroll = totalScroll;
- obj.invalidate();
+ obj.invalidateIfPortrait();
}
};
private Runnable mHideLineRunnable = () -> animateLineToAlpha(0);
- public PageIndicatorLine(Context context) {
+ public WorkspacePageIndicator(Context context) {
this(context, null);
}
- public PageIndicatorLine(Context context, AttributeSet attrs) {
+ public WorkspacePageIndicator(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
- public PageIndicatorLine(Context context, AttributeSet attrs, int defStyle) {
+ public WorkspacePageIndicator(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
Resources res = context.getResources();
@@ -128,7 +140,7 @@ public class PageIndicatorLine extends PageIndicator implements Insettable {
@Override
protected void onDraw(Canvas canvas) {
- if (mTotalScroll == 0 || mNumPagesFloat == 0) {
+ if (mTotalScroll == 0 || mNumPagesFloat == 0 || mIsLandscapeUi) {
return;
}
@@ -155,7 +167,7 @@ public class PageIndicatorLine extends PageIndicator implements Insettable {
} else if (mTotalScroll != totalScroll) {
animateToTotalScroll(totalScroll);
} else {
- invalidate();
+ invalidateIfPortrait();
}
if (mShouldAutoHide) {
@@ -233,10 +245,53 @@ public class PageIndicatorLine extends PageIndicator implements Insettable {
@Override
public void setInsets(Rect insets) {
DeviceProfile grid = mLauncher.getDeviceProfile();
+ mIsLandscapeUi = grid.isVerticalBarLayout();
FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) getLayoutParams();
- lp.gravity = Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM;
- lp.height = grid.pageIndicatorSizePx;
- lp.bottomMargin = grid.hotseatBarSizePx + insets.bottom;
+
+ if (mIsLandscapeUi) {
+ if (insets.left > insets.right) {
+ lp.leftMargin = grid.hotseatBarSidePaddingPx;
+ lp.rightMargin = insets.right;
+ lp.gravity = Gravity.RIGHT | Gravity.BOTTOM;
+ } else {
+ lp.leftMargin = insets.left;
+ lp.rightMargin = grid.hotseatBarSidePaddingPx;
+ lp.gravity = Gravity.LEFT | Gravity.BOTTOM;
+ }
+ lp.bottomMargin = grid.workspacePadding.bottom;
+ lp.width = lp.height = getResources()
+ .getDimensionPixelSize(R.dimen.dynamic_grid_min_page_indicator_size);
+
+ setBackgroundResource(R.drawable.all_apps_handle_landscape);
+ setOnFocusChangeListener(mLauncher.mFocusHandler);
+ setOnClickListener(this);
+
+ } else {
+ lp.gravity = Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM;
+ lp.height = grid.pageIndicatorSizePx;
+ lp.bottomMargin = grid.hotseatBarSizePx + insets.bottom;
+ lp.width = MATCH_PARENT;
+
+ setBackgroundResource(0);
+ setOnFocusChangeListener(null);
+ setOnClickListener(null);
+ }
+
setLayoutParams(lp);
}
+
+ private void invalidateIfPortrait() {
+ if (!mIsLandscapeUi) {
+ invalidate();
+ }
+ }
+
+ @Override
+ public void onClick(View view) {
+ if (!mLauncher.isInState(ALL_APPS)) {
+ mLauncher.getUserEventDispatcher().logActionOnControl(
+ Action.Touch.TAP, ControlType.ALL_APPS_BUTTON);
+ mLauncher.getStateManager().goToState(ALL_APPS);
+ }
+ }
}