summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin F. Haggerty <haggertk@lineageos.org>2019-05-07 20:35:36 -0600
committerKevin F. Haggerty <haggertk@lineageos.org>2019-05-07 21:33:02 -0600
commit61407710d37b510f2b0393532ac2f9fa9bffaedf (patch)
tree0f6f189ae9faa19039e668a84198e4cd1a5506e9
parent4008a89a772db78a808cc8636d05ebcf2751fedc (diff)
parent170be9beb07b104985da50f3018ed9da025681b7 (diff)
downloadandroid_packages_apps_Trebuchet-61407710d37b510f2b0393532ac2f9fa9bffaedf.tar.gz
android_packages_apps_Trebuchet-61407710d37b510f2b0393532ac2f9fa9bffaedf.tar.bz2
android_packages_apps_Trebuchet-61407710d37b510f2b0393532ac2f9fa9bffaedf.zip
Merge tag 'android-9.0.0_r37' into staging/lineage-16.0_merge-android-9.0.0_r37
Android 9.0.0 Release 37 (PQ3A.190505.002) * tag 'android-9.0.0_r37': Preventing padding from getting reset when the widget updates Revert "Use clear-all recent tasks call" Kill launcher when display size changes Use clear-all recent tasks call Fix missing callback in fallback activity to re-enable high res loader. Update launcher grid for tablet devices. Fix gap between notification dots and their shadows Add null check before playing recents scale down anim Defer starting the high-res thumbnail loader until quick step/scrub Increase max distance for folder creation for tablets. App menu icon launching app info hides taskview menu Change-Id: I73e57c71349e3fcb7c56b89b74fc2ffdbcb45393
-rw-r--r--quickstep/src/com/android/launcher3/uioverrides/UiFactory.java8
-rw-r--r--quickstep/src/com/android/quickstep/ActivityControlHelper.java3
-rw-r--r--quickstep/src/com/android/quickstep/RecentsActivity.java6
-rw-r--r--quickstep/src/com/android/quickstep/RecentsModel.java1
-rw-r--r--quickstep/src/com/android/quickstep/TaskSystemShortcut.java6
-rw-r--r--quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java6
-rw-r--r--res/xml/device_profiles.xml8
-rw-r--r--src/com/android/launcher3/DeviceProfile.java7
-rw-r--r--src/com/android/launcher3/Launcher.java6
-rw-r--r--src/com/android/launcher3/Workspace.java4
-rw-r--r--src/com/android/launcher3/graphics/ShadowGenerator.java6
-rw-r--r--src/com/android/launcher3/popup/SystemShortcut.java6
-rw-r--r--src/com/android/launcher3/qsb/QsbContainerView.java1
-rw-r--r--src/com/android/launcher3/qsb/QsbWidgetHostView.java5
-rw-r--r--src/com/android/launcher3/util/ConfigMonitor.java73
-rw-r--r--src_ui_overrides/com/android/launcher3/uioverrides/UiFactory.java2
16 files changed, 127 insertions, 21 deletions
diff --git a/quickstep/src/com/android/launcher3/uioverrides/UiFactory.java b/quickstep/src/com/android/launcher3/uioverrides/UiFactory.java
index 47e67005f..abee2a8bb 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/UiFactory.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/UiFactory.java
@@ -168,6 +168,14 @@ public class UiFactory {
}
}
+ public static void onEnterAnimationComplete(Context context) {
+ // After the transition to home, enable the high-res thumbnail loader if it wasn't enabled
+ // as a part of quickstep/scrub, so that high-res thumbnails can load the next time we
+ // enter overview
+ RecentsModel.getInstance(context).getRecentsTaskLoader()
+ .getHighResThumbnailLoader().setVisible(true);
+ }
+
public static void onLauncherStateOrResumeChanged(Launcher launcher) {
LauncherState state = launcher.getStateManager().getState();
DeviceProfile profile = launcher.getDeviceProfile();
diff --git a/quickstep/src/com/android/quickstep/ActivityControlHelper.java b/quickstep/src/com/android/quickstep/ActivityControlHelper.java
index 275075f27..ced87542d 100644
--- a/quickstep/src/com/android/quickstep/ActivityControlHelper.java
+++ b/quickstep/src/com/android/quickstep/ActivityControlHelper.java
@@ -294,6 +294,9 @@ public interface ActivityControlHelper<T extends BaseDraggingActivity> {
private void playScaleDownAnim(AnimatorSet anim, Launcher launcher) {
RecentsView recentsView = launcher.getOverviewPanel();
TaskView v = recentsView.getTaskViewAt(recentsView.getCurrentPage());
+ if (v == null) {
+ return;
+ }
ClipAnimationHelper clipHelper = new ClipAnimationHelper();
clipHelper.fromTaskThumbnailView(v.getThumbnail(), (RecentsView) v.getParent(), null);
if (!clipHelper.getSourceRect().isEmpty() && !clipHelper.getTargetRect().isEmpty()) {
diff --git a/quickstep/src/com/android/quickstep/RecentsActivity.java b/quickstep/src/com/android/quickstep/RecentsActivity.java
index ed8b4d2b1..1d7c066ab 100644
--- a/quickstep/src/com/android/quickstep/RecentsActivity.java
+++ b/quickstep/src/com/android/quickstep/RecentsActivity.java
@@ -241,6 +241,12 @@ public class RecentsActivity extends BaseDraggingActivity {
}
@Override
+ public void onEnterAnimationComplete() {
+ super.onEnterAnimationComplete();
+ UiFactory.onEnterAnimationComplete(this);
+ }
+
+ @Override
public void onTrimMemory(int level) {
super.onTrimMemory(level);
UiFactory.onTrimMemory(this, level);
diff --git a/quickstep/src/com/android/quickstep/RecentsModel.java b/quickstep/src/com/android/quickstep/RecentsModel.java
index 0c8e47f2b..0b97f0119 100644
--- a/quickstep/src/com/android/quickstep/RecentsModel.java
+++ b/quickstep/src/com/android/quickstep/RecentsModel.java
@@ -232,7 +232,6 @@ public class RecentsModel extends TaskStackChangeListener {
public void onStart() {
mRecentsTaskLoader.startLoader(mContext);
- mRecentsTaskLoader.getHighResThumbnailLoader().setVisible(true);
}
public void onTrimMemory(int level) {
diff --git a/quickstep/src/com/android/quickstep/TaskSystemShortcut.java b/quickstep/src/com/android/quickstep/TaskSystemShortcut.java
index 5a6312d4e..e5a2b5e25 100644
--- a/quickstep/src/com/android/quickstep/TaskSystemShortcut.java
+++ b/quickstep/src/com/android/quickstep/TaskSystemShortcut.java
@@ -30,7 +30,6 @@ import android.os.UserHandle;
import android.util.Log;
import android.view.View;
-import com.android.launcher3.AbstractFloatingView;
import com.android.launcher3.BaseDraggingActivity;
import com.android.launcher3.DeviceProfile;
import com.android.launcher3.ItemInfo;
@@ -270,9 +269,4 @@ public class TaskSystemShortcut<T extends SystemShortcut> extends SystemShortcut
return null;
}
}
-
- private static void dismissTaskMenuView(BaseDraggingActivity activity) {
- AbstractFloatingView.closeOpenViews(activity, true,
- AbstractFloatingView.TYPE_ALL & ~AbstractFloatingView.TYPE_REBIND_SAFE);
- }
}
diff --git a/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java b/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java
index 902eb950d..1f0a05775 100644
--- a/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java
+++ b/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java
@@ -483,6 +483,12 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity> {
if (LatencyTrackerCompat.isEnabled(mContext)) {
LatencyTrackerCompat.logToggleRecents((int) (mLauncherFrameDrawnTime - mTouchTimeMs));
}
+
+ // This method is only called when STATE_GESTURE_STARTED_QUICKSTEP/
+ // STATE_GESTURE_STARTED_QUICKSCRUB is set, so we can enable the high-res thumbnail loader
+ // here once we are sure that we will end up in an overview state
+ RecentsModel.getInstance(mContext).getRecentsTaskLoader()
+ .getHighResThumbnailLoader().setVisible(true);
}
public void updateInteractionType(@InteractionType int interactionType) {
diff --git a/res/xml/device_profiles.xml b/res/xml/device_profiles.xml
index 721a13246..1b4101b6b 100644
--- a/res/xml/device_profiles.xml
+++ b/res/xml/device_profiles.xml
@@ -141,14 +141,14 @@
launcher:name="Nexus 7"
launcher:minWidthDps="575"
launcher:minHeightDps="904"
- launcher:numRows="5"
+ launcher:numRows="6"
launcher:numColumns="6"
launcher:numFolderRows="4"
launcher:numFolderColumns="5"
launcher:minAllAppsPredictionColumns="4"
launcher:iconSize="60"
launcher:iconTextSize="14.4"
- launcher:numHotseatIcons="7"
+ launcher:numHotseatIcons="6"
launcher:defaultLayoutId="@xml/default_workspace_5x6"
/>
@@ -156,8 +156,8 @@
launcher:name="Nexus 10"
launcher:minWidthDps="727"
launcher:minHeightDps="1207"
- launcher:numRows="5"
- launcher:numColumns="6"
+ launcher:numRows="6"
+ launcher:numColumns="7"
launcher:numFolderRows="4"
launcher:numFolderColumns="5"
launcher:minAllAppsPredictionColumns="4"
diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java
index c17628767..ad2c0786b 100644
--- a/src/com/android/launcher3/DeviceProfile.java
+++ b/src/com/android/launcher3/DeviceProfile.java
@@ -59,6 +59,9 @@ public class DeviceProfile {
private static final float TALL_DEVICE_ASPECT_RATIO_THRESHOLD = 2.0f;
+ // To evenly space the icons, increase the left/right margins for tablets in portrait mode.
+ private static final int PORTRAIT_TABLET_LEFT_RIGHT_PADDING_MULTIPLIER = 4;
+
// Workspace
public final int desiredWorkspaceLeftRightMarginPx;
public final int cellLayoutPaddingLeftRightPx;
@@ -172,7 +175,9 @@ public class DeviceProfile {
defaultWidgetPadding = AppWidgetHostView.getDefaultPaddingForWidget(context, cn, null);
edgeMarginPx = res.getDimensionPixelSize(R.dimen.dynamic_grid_edge_margin);
desiredWorkspaceLeftRightMarginPx = isVerticalBarLayout() ? 0 : edgeMarginPx;
- cellLayoutPaddingLeftRightPx =
+ int cellLayoutPaddingLeftRightMultiplier = !isVerticalBarLayout() && isTablet
+ ? PORTRAIT_TABLET_LEFT_RIGHT_PADDING_MULTIPLIER : 1;
+ cellLayoutPaddingLeftRightPx = cellLayoutPaddingLeftRightMultiplier *
res.getDimensionPixelSize(R.dimen.dynamic_grid_cell_layout_padding);
cellLayoutBottomPaddingPx =
res.getDimensionPixelSize(R.dimen.dynamic_grid_cell_layout_bottom_padding);
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index df64623ca..47f875459 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -353,6 +353,12 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns,
}
@Override
+ public void onEnterAnimationComplete() {
+ super.onEnterAnimationComplete();
+ UiFactory.onEnterAnimationComplete(this);
+ }
+
+ @Override
public void onConfigurationChanged(Configuration newConfig) {
int diff = newConfig.diff(mOldConfig);
if ((diff & (CONFIG_ORIENTATION | CONFIG_SCREEN_SIZE)) != 0) {
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index b570acaa3..de7e6d8cd 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -286,7 +286,9 @@ public class Workspace extends PagedView<WorkspacePageIndicator>
mInsets.set(insets);
DeviceProfile grid = mLauncher.getDeviceProfile();
- mMaxDistanceForFolderCreation = (0.55f * grid.iconSizePx);
+ mMaxDistanceForFolderCreation = grid.isTablet
+ ? 0.75f * grid.iconSizePx
+ : 0.55f * grid.iconSizePx;
mWorkspaceFadeInAdjacentScreens = grid.shouldFadeAdjacentWorkspaceScreens();
Rect padding = grid.workspacePadding;
diff --git a/src/com/android/launcher3/graphics/ShadowGenerator.java b/src/com/android/launcher3/graphics/ShadowGenerator.java
index 5fbf502aa..88da853d6 100644
--- a/src/com/android/launcher3/graphics/ShadowGenerator.java
+++ b/src/com/android/launcher3/graphics/ShadowGenerator.java
@@ -126,13 +126,13 @@ public class ShadowGenerator {
}
public Bitmap createPill(int width, int height) {
- radius = height / 2;
+ radius = height / 2f;
- int centerX = Math.round(width / 2 + shadowBlur);
+ int centerX = Math.round(width / 2f + shadowBlur);
int centerY = Math.round(radius + shadowBlur + keyShadowDistance);
int center = Math.max(centerX, centerY);
bounds.set(0, 0, width, height);
- bounds.offsetTo(center - width / 2, center - height / 2);
+ bounds.offsetTo(center - width / 2f, center - height / 2f);
int size = center * 2;
Bitmap result = Bitmap.createBitmap(size, size, Config.ARGB_8888);
diff --git a/src/com/android/launcher3/popup/SystemShortcut.java b/src/com/android/launcher3/popup/SystemShortcut.java
index 0348b0bfc..a5bf68ce6 100644
--- a/src/com/android/launcher3/popup/SystemShortcut.java
+++ b/src/com/android/launcher3/popup/SystemShortcut.java
@@ -80,6 +80,7 @@ public abstract class SystemShortcut<T extends BaseDraggingActivity> extends Ite
public View.OnClickListener getOnClickListener(
BaseDraggingActivity activity, ItemInfo itemInfo) {
return (view) -> {
+ dismissTaskMenuView(activity);
Rect sourceBounds = activity.getViewBounds(view);
Bundle opts = activity.getActivityLaunchOptionsAsBundle(view);
new PackageManagerHelper(activity).startDetailsActivityForInfo(
@@ -122,4 +123,9 @@ public abstract class SystemShortcut<T extends BaseDraggingActivity> extends Ite
};
}
}
+
+ protected static void dismissTaskMenuView(BaseDraggingActivity activity) {
+ AbstractFloatingView.closeOpenViews(activity, true,
+ AbstractFloatingView.TYPE_ALL & ~AbstractFloatingView.TYPE_REBIND_SAFE);
+ }
}
diff --git a/src/com/android/launcher3/qsb/QsbContainerView.java b/src/com/android/launcher3/qsb/QsbContainerView.java
index c9f6721ef..f103f804a 100644
--- a/src/com/android/launcher3/qsb/QsbContainerView.java
+++ b/src/com/android/launcher3/qsb/QsbContainerView.java
@@ -191,7 +191,6 @@ public class QsbContainerView extends FrameLayout {
.getAppWidgetOptions(widgetId), opts)) {
mQsb.updateAppWidgetOptions(opts);
}
- mQsb.setPadding(0, 0, 0, 0);
mQsbWidgetHost.startListening();
return mQsb;
}
diff --git a/src/com/android/launcher3/qsb/QsbWidgetHostView.java b/src/com/android/launcher3/qsb/QsbWidgetHostView.java
index 906edf92a..de9caf4f5 100644
--- a/src/com/android/launcher3/qsb/QsbWidgetHostView.java
+++ b/src/com/android/launcher3/qsb/QsbWidgetHostView.java
@@ -58,6 +58,11 @@ public class QsbWidgetHostView extends AppWidgetHostView {
return mPreviousOrientation != orientation;
}
+ @Override
+ public void setPadding(int left, int top, int right, int bottom) {
+ // Prevent the base class from applying the default widget padding.
+ super.setPadding(0, 0, 0, 0);
+ }
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
diff --git a/src/com/android/launcher3/util/ConfigMonitor.java b/src/com/android/launcher3/util/ConfigMonitor.java
index 2489d3048..611931d28 100644
--- a/src/com/android/launcher3/util/ConfigMonitor.java
+++ b/src/com/android/launcher3/util/ConfigMonitor.java
@@ -21,37 +21,102 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Configuration;
+import android.graphics.Point;
+import android.hardware.display.DisplayManager;
+import android.hardware.display.DisplayManager.DisplayListener;
+import android.os.Handler;
import android.util.Log;
+import android.view.Display;
+import android.view.WindowManager;
/**
* {@link BroadcastReceiver} which watches configuration changes and
* restarts the process in case changes which affect the device profile occur.
*/
-public class ConfigMonitor extends BroadcastReceiver {
+public class ConfigMonitor extends BroadcastReceiver implements DisplayListener {
+
+ private static final String TAG = "ConfigMonitor";
+
+ private final Point mTmpPoint1 = new Point();
+ private final Point mTmpPoint2 = new Point();
private final Context mContext;
private final float mFontScale;
private final int mDensity;
+ private final int mDisplayId;
+ private final Point mRealSize;
+ private final Point mSmallestSize, mLargestSize;
+
public ConfigMonitor(Context context) {
mContext = context;
Configuration config = context.getResources().getConfiguration();
mFontScale = config.fontScale;
mDensity = config.densityDpi;
+
+ Display display = getDefaultDisplay(context);
+ mDisplayId = display.getDisplayId();
+
+ mRealSize = new Point();
+ display.getRealSize(mRealSize);
+
+ mSmallestSize = new Point();
+ mLargestSize = new Point();
+ display.getCurrentSizeRange(mSmallestSize, mLargestSize);
}
@Override
public void onReceive(Context context, Intent intent) {
Configuration config = context.getResources().getConfiguration();
if (mFontScale != config.fontScale || mDensity != config.densityDpi) {
- Log.d("ConfigMonitor", "Configuration changed, restarting launcher");
- mContext.unregisterReceiver(this);
- android.os.Process.killProcess(android.os.Process.myPid());
+ Log.d(TAG, "Configuration changed");
+ killProcess();
}
}
public void register() {
mContext.registerReceiver(this, new IntentFilter(Intent.ACTION_CONFIGURATION_CHANGED));
+ mContext.getSystemService(DisplayManager.class)
+ .registerDisplayListener(this, new Handler(UiThreadHelper.getBackgroundLooper()));
+ }
+
+ @Override
+ public void onDisplayAdded(int displayId) { }
+
+ @Override
+ public void onDisplayRemoved(int displayId) { }
+
+ @Override
+ public void onDisplayChanged(int displayId) {
+ if (displayId != mDisplayId) {
+ return;
+ }
+ Display display = getDefaultDisplay(mContext);
+ display.getRealSize(mTmpPoint1);
+
+ if (!mRealSize.equals(mTmpPoint1) && !mRealSize.equals(mTmpPoint1.y, mTmpPoint1.x)) {
+ Log.d(TAG, String.format("Display size changed from %s to %s", mRealSize, mTmpPoint1));
+ killProcess();
+ return;
+ }
+
+ display.getCurrentSizeRange(mTmpPoint1, mTmpPoint2);
+ if (!mSmallestSize.equals(mTmpPoint1) || !mLargestSize.equals(mTmpPoint2)) {
+ Log.d(TAG, String.format("Available size changed from [%s, %s] to [%s, %s]",
+ mSmallestSize, mLargestSize, mTmpPoint1, mTmpPoint2));
+ killProcess();
+ }
+ }
+
+ private void killProcess() {
+ Log.d(TAG, "restarting launcher");
+ mContext.unregisterReceiver(this);
+ mContext.getSystemService(DisplayManager.class).unregisterDisplayListener(this);
+ android.os.Process.killProcess(android.os.Process.myPid());
+ }
+
+ private Display getDefaultDisplay(Context context) {
+ return context.getSystemService(WindowManager.class).getDefaultDisplay();
}
}
diff --git a/src_ui_overrides/com/android/launcher3/uioverrides/UiFactory.java b/src_ui_overrides/com/android/launcher3/uioverrides/UiFactory.java
index 5a7e50fae..0d727fdbb 100644
--- a/src_ui_overrides/com/android/launcher3/uioverrides/UiFactory.java
+++ b/src_ui_overrides/com/android/launcher3/uioverrides/UiFactory.java
@@ -48,6 +48,8 @@ public class UiFactory {
public static void onStart(Launcher launcher) { }
+ public static void onEnterAnimationComplete(Context context) {}
+
public static void onLauncherStateOrResumeChanged(Launcher launcher) { }
public static void onTrimMemory(Launcher launcher, int level) { }