summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Android.mk50
-rw-r--r--quickstep/res/values/dimens.xml1
-rw-r--r--quickstep/src/com/android/launcher3/uioverrides/AllAppsState.java7
-rw-r--r--quickstep/src/com/android/launcher3/uioverrides/FastOverviewState.java29
-rw-r--r--quickstep/src/com/android/launcher3/uioverrides/OverviewState.java5
-rw-r--r--quickstep/src/com/android/quickstep/ActivityControlHelper.java6
-rw-r--r--quickstep/src/com/android/quickstep/OtherActivityTouchConsumer.java10
-rw-r--r--quickstep/src/com/android/quickstep/QuickScrubController.java2
-rw-r--r--quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java4
-rw-r--r--quickstep/src/com/android/quickstep/util/ClipAnimationHelper.java16
-rw-r--r--quickstep/src/com/android/quickstep/views/RecentsView.java17
-rw-r--r--quickstep/src/com/android/quickstep/views/RecentsViewContainer.java13
-rw-r--r--quickstep/src/com/android/quickstep/views/TaskView.java3
-rw-r--r--res/values/styles.xml11
-rw-r--r--src/com/android/launcher3/BaseDraggingActivity.java8
-rw-r--r--src/com/android/launcher3/LauncherState.java6
-rw-r--r--src/com/android/launcher3/LauncherStateManager.java24
-rw-r--r--src/com/android/launcher3/Workspace.java10
-rw-r--r--src/com/android/launcher3/dragndrop/DragController.java4
-rw-r--r--src/com/android/launcher3/dragndrop/DragView.java6
-rw-r--r--src/com/android/launcher3/states/SpringLoadedState.java6
-rw-r--r--src/com/android/launcher3/widget/PendingItemDragHelper.java2
-rw-r--r--src_ui_overrides/com/android/launcher3/uioverrides/AllAppsState.java7
23 files changed, 151 insertions, 96 deletions
diff --git a/Android.mk b/Android.mk
index dbafcbceb..ab445acaf 100644
--- a/Android.mk
+++ b/Android.mk
@@ -173,7 +173,57 @@ LOCAL_JACK_COVERAGE_INCLUDE_FILTER := com.android.launcher3.*
include $(BUILD_PACKAGE)
+#
+# Build rule for Launcher3 Go app with quickstep for Android Go devices.
+#
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_STATIC_JAVA_LIBRARIES := \
+ android-support-v4 \
+ android-support-v7-recyclerview \
+ android-support-dynamic-animation \
+ libSharedSystemUI
+
+LOCAL_SRC_FILES := \
+ $(call all-java-files-under, src) \
+ $(call all-java-files-under, quickstep/src) \
+ $(call all-java-files-under, go/src_flags) \
+ $(call all-proto-files-under, protos) \
+ $(call all-proto-files-under, proto_overrides)
+
+LOCAL_RESOURCE_DIR := \
+ $(LOCAL_PATH)/quickstep/res \
+ $(LOCAL_PATH)/go/res \
+ $(LOCAL_PATH)/res \
+ prebuilts/sdk/current/support/v7/recyclerview/res \
+LOCAL_PROGUARD_ENABLED := disabled
+
+LOCAL_PROTOC_OPTIMIZE_TYPE := nano
+LOCAL_PROTOC_FLAGS := --proto_path=$(LOCAL_PATH)/protos/ --proto_path=$(LOCAL_PATH)/proto_overrides/
+LOCAL_PROTO_JAVA_OUTPUT_PARAMS := enum_style=java
+
+LOCAL_AAPT_FLAGS := \
+ --auto-add-overlay \
+ --extra-packages android.support.v7.recyclerview \
+
+LOCAL_SDK_VERSION := system_current
+LOCAL_MIN_SDK_VERSION := 26
+LOCAL_PACKAGE_NAME := Launcher3QuickStepGo
+LOCAL_PRIVILEGED_MODULE := true
+LOCAL_OVERRIDES_PACKAGES := Home Launcher2 Launcher3
+
+LOCAL_FULL_LIBS_MANIFEST_FILES := \
+ $(LOCAL_PATH)/go/AndroidManifest.xml \
+ $(LOCAL_PATH)/AndroidManifest.xml \
+ $(LOCAL_PATH)/AndroidManifest-common.xml
+
+LOCAL_MANIFEST_FILE := quickstep/AndroidManifest.xml
+LOCAL_JACK_COVERAGE_INCLUDE_FILTER := com.android.launcher3.*
+
+include $(BUILD_PACKAGE)
# ==================================================
diff --git a/quickstep/res/values/dimens.xml b/quickstep/res/values/dimens.xml
index ad5f767be..ed18bf5e3 100644
--- a/quickstep/res/values/dimens.xml
+++ b/quickstep/res/values/dimens.xml
@@ -21,6 +21,7 @@
<dimen name="task_menu_background_radius">12dp</dimen>
<dimen name="task_corner_radius">2dp</dimen>
<dimen name="recents_page_spacing">10dp</dimen>
+ <dimen name="quickscrub_adjacent_visible_width">20dp</dimen>
<!-- The speed in dp/s at which the user needs to be scrolling in recents such that we start
loading full resolution screenshots. -->
diff --git a/quickstep/src/com/android/launcher3/uioverrides/AllAppsState.java b/quickstep/src/com/android/launcher3/uioverrides/AllAppsState.java
index d86ba6aa6..1eaa8bc92 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/AllAppsState.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/AllAppsState.java
@@ -18,8 +18,6 @@ package com.android.launcher3.uioverrides;
import static com.android.launcher3.LauncherAnimUtils.ALL_APPS_TRANSITION_MS;
import static com.android.launcher3.anim.Interpolators.DEACCEL_2;
-import android.view.View;
-
import com.android.launcher3.AbstractFloatingView;
import com.android.launcher3.Launcher;
import com.android.launcher3.LauncherState;
@@ -62,11 +60,6 @@ public class AllAppsState extends LauncherState {
}
@Override
- public View getFinalFocus(Launcher launcher) {
- return launcher.getAppsView();
- }
-
- @Override
public float[] getWorkspaceScaleAndTranslation(Launcher launcher) {
float[] scaleAndTranslation = LauncherState.OVERVIEW.getWorkspaceScaleAndTranslation(
launcher);
diff --git a/quickstep/src/com/android/launcher3/uioverrides/FastOverviewState.java b/quickstep/src/com/android/launcher3/uioverrides/FastOverviewState.java
index da85990bb..43d982230 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/FastOverviewState.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/FastOverviewState.java
@@ -15,8 +15,13 @@
*/
package com.android.launcher3.uioverrides;
+import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.Rect;
+
import com.android.launcher3.DeviceProfile;
import com.android.launcher3.Launcher;
+import com.android.launcher3.R;
import com.android.quickstep.QuickScrubController;
import com.android.quickstep.views.RecentsView;
@@ -25,6 +30,12 @@ import com.android.quickstep.views.RecentsView;
*/
public class FastOverviewState extends OverviewState {
+ private static final float MAX_PREVIEW_SCALE_UP = 1.3f;
+ /**
+ * Vertical transition of the task previews relative to the full container.
+ */
+ public static final float OVERVIEW_TRANSLATION_FACTOR = 0.5f;
+
private static final int STATE_FLAGS = FLAG_DISABLE_RESTORE | FLAG_DISABLE_INTERACTION
| FLAG_OVERVIEW_UI | FLAG_HIDE_BACK_BUTTON | FLAG_DISABLE_ACCESSIBILITY;
@@ -46,15 +57,23 @@ public class FastOverviewState extends OverviewState {
@Override
public float[] getOverviewScaleAndTranslationYFactor(Launcher launcher) {
- return new float[] {getOverviewScale(launcher.getDeviceProfile()), 0.5f};
+ RecentsView recentsView = launcher.getOverviewPanel();
+ recentsView.getTaskSize(sTempRect);
+
+ return new float[] {getOverviewScale(launcher.getDeviceProfile(), sTempRect, launcher),
+ OVERVIEW_TRANSLATION_FACTOR};
}
- public static float getOverviewScale(DeviceProfile dp) {
- if (dp.isMultiWindowMode || dp.isVerticalBarLayout()) {
+ public static float getOverviewScale(DeviceProfile dp, Rect taskRect, Context context) {
+ if (dp.isVerticalBarLayout()) {
return 1f;
}
- // TODO: Calculate it dynamically based on available space
- return 1.3f;
+ Resources res = context.getResources();
+ float usedHeight = taskRect.height() + res.getDimension(R.dimen.task_thumbnail_top_margin);
+ float usedWidth = taskRect.width() + 2 * (res.getDimension(R.dimen.recents_page_spacing)
+ + res.getDimension(R.dimen.quickscrub_adjacent_visible_width));
+ return Math.min(Math.min(dp.availableHeightPx / usedHeight,
+ dp.availableWidthPx / usedWidth), MAX_PREVIEW_SCALE_UP);
}
}
diff --git a/quickstep/src/com/android/launcher3/uioverrides/OverviewState.java b/quickstep/src/com/android/launcher3/uioverrides/OverviewState.java
index 0116a8e0e..9169ffbc1 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/OverviewState.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/OverviewState.java
@@ -83,11 +83,6 @@ public class OverviewState extends LauncherState {
DiscoveryBounce.showForOverviewIfNeeded(launcher);
}
- @Override
- public View getFinalFocus(Launcher launcher) {
- return launcher.getOverviewPanel();
- }
-
public PageAlphaProvider getWorkspacePageAlphaProvider(Launcher launcher) {
return new PageAlphaProvider(DEACCEL_2) {
@Override
diff --git a/quickstep/src/com/android/quickstep/ActivityControlHelper.java b/quickstep/src/com/android/quickstep/ActivityControlHelper.java
index d47fec5fc..e202c574a 100644
--- a/quickstep/src/com/android/quickstep/ActivityControlHelper.java
+++ b/quickstep/src/com/android/quickstep/ActivityControlHelper.java
@@ -153,8 +153,8 @@ public interface ActivityControlHelper<T extends BaseDraggingActivity> {
@Override
public float getTranslationYForQuickScrub(Launcher activity) {
LauncherRecentsView recentsView = activity.getOverviewPanel();
- float transYFactor = FAST_OVERVIEW.getOverviewScaleAndTranslationYFactor(activity)[1];
- return recentsView.computeTranslationYForFactor(transYFactor);
+ return recentsView.computeTranslationYForFactor(
+ FastOverviewState.OVERVIEW_TRANSLATION_FACTOR);
}
@Override
@@ -167,7 +167,7 @@ public interface ActivityControlHelper<T extends BaseDraggingActivity> {
@InteractionType int interactionType, TransformedRect outRect) {
LayoutUtils.calculateLauncherTaskSize(context, dp, outRect.rect);
if (interactionType == INTERACTION_QUICK_SCRUB) {
- outRect.scale = FastOverviewState.getOverviewScale(dp);
+ outRect.scale = FastOverviewState.getOverviewScale(dp, outRect.rect, context);
}
if (dp.isVerticalBarLayout()) {
Rect targetInsets = dp.getInsets();
diff --git a/quickstep/src/com/android/quickstep/OtherActivityTouchConsumer.java b/quickstep/src/com/android/quickstep/OtherActivityTouchConsumer.java
index a2aa4b947..9ba332831 100644
--- a/quickstep/src/com/android/quickstep/OtherActivityTouchConsumer.java
+++ b/quickstep/src/com/android/quickstep/OtherActivityTouchConsumer.java
@@ -265,12 +265,10 @@ public class OtherActivityTouchConsumer extends ContextWrapper implements TouchC
if (Looper.myLooper() != Looper.getMainLooper()) {
startActivity.run();
- if (!mIsDeferredDownTarget) {
- try {
- drawWaitLock.await(LAUNCHER_DRAW_TIMEOUT_MS, TimeUnit.MILLISECONDS);
- } catch (Exception e) {
- // We have waited long enough for launcher to draw
- }
+ try {
+ drawWaitLock.await(LAUNCHER_DRAW_TIMEOUT_MS, TimeUnit.MILLISECONDS);
+ } catch (Exception e) {
+ // We have waited long enough for launcher to draw
}
} else {
// We should almost always get touch-town on background thread. This is an edge case
diff --git a/quickstep/src/com/android/quickstep/QuickScrubController.java b/quickstep/src/com/android/quickstep/QuickScrubController.java
index abb479dea..8e1a3d5d8 100644
--- a/quickstep/src/com/android/quickstep/QuickScrubController.java
+++ b/quickstep/src/com/android/quickstep/QuickScrubController.java
@@ -49,7 +49,7 @@ public class QuickScrubController implements OnAlarmListener {
* Snap to a new page when crossing these thresholds. The first and last auto-advance.
*/
private static final float[] QUICK_SCRUB_THRESHOLDS = new float[] {
- 0.04f, 0.27f, 0.50f, 0.73f, 0.96f
+ 0.05f, 0.20f, 0.35f, 0.50f, 0.65f, 0.80f, 0.95f
};
private static final String TAG = "QuickScrubController";
diff --git a/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java b/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java
index e93c80789..191c237f6 100644
--- a/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java
+++ b/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java
@@ -273,8 +273,8 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity> {
| STATE_SCALED_CONTROLLER_APP,
this::notifyTransitionCancelled);
- mStateCallback.addCallback(STATE_LAUNCHER_STARTED | STATE_QUICK_SCRUB_START,
- this::onQuickScrubStart);
+ mStateCallback.addCallback(STATE_LAUNCHER_STARTED | STATE_QUICK_SCRUB_START
+ | STATE_APP_CONTROLLER_RECEIVED, this::onQuickScrubStart);
mStateCallback.addCallback(STATE_LAUNCHER_STARTED | STATE_QUICK_SCRUB_START
| STATE_SCALED_CONTROLLER_RECENTS, this::onFinishedTransitionToQuickScrub);
mStateCallback.addCallback(STATE_LAUNCHER_STARTED | STATE_CURRENT_TASK_FINISHED
diff --git a/quickstep/src/com/android/quickstep/util/ClipAnimationHelper.java b/quickstep/src/com/android/quickstep/util/ClipAnimationHelper.java
index cc24f1d8a..a654482f9 100644
--- a/quickstep/src/com/android/quickstep/util/ClipAnimationHelper.java
+++ b/quickstep/src/com/android/quickstep/util/ClipAnimationHelper.java
@@ -227,12 +227,16 @@ public class ClipAnimationHelper {
dl.getDescendantRectRelativeToSelf(ttv, targetRect.rect);
updateTargetRect(targetRect);
- // Transform the clip relative to the target rect.
- float scale = mTargetRect.width() / mSourceRect.width();
- mSourceWindowClipInsets.left = mSourceWindowClipInsets.left * scale;
- mSourceWindowClipInsets.top = mSourceWindowClipInsets.top * scale;
- mSourceWindowClipInsets.right = mSourceWindowClipInsets.right * scale;
- mSourceWindowClipInsets.bottom = mSourceWindowClipInsets.bottom * scale;
+ if (target == null) {
+ // Transform the clip relative to the target rect. Only do this in the case where we
+ // aren't applying the insets to the app windows (where the clip should be in target app
+ // space)
+ float scale = mTargetRect.width() / mSourceRect.width();
+ mSourceWindowClipInsets.left = mSourceWindowClipInsets.left * scale;
+ mSourceWindowClipInsets.top = mSourceWindowClipInsets.top * scale;
+ mSourceWindowClipInsets.right = mSourceWindowClipInsets.right * scale;
+ mSourceWindowClipInsets.bottom = mSourceWindowClipInsets.bottom * scale;
+ }
}
private void updateStackBoundsToMultiWindowTaskSize(BaseDraggingActivity activity) {
diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java
index 4f169fb47..dee15d0d7 100644
--- a/quickstep/src/com/android/quickstep/views/RecentsView.java
+++ b/quickstep/src/com/android/quickstep/views/RecentsView.java
@@ -271,6 +271,7 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
.getDimensionPixelSize(R.dimen.recents_empty_message_text_padding);
setWillNotDraw(false);
updateEmptyMessage();
+ setFocusable(false);
}
public boolean isRtl() {
@@ -931,16 +932,6 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
return true;
}
- @Override
- public void onVisibilityAggregated(boolean isVisible) {
- super.onVisibilityAggregated(isVisible);
- if (isVisible && !isFocused()) {
- // Having focus, even in touch mode, keeps us from losing [Alt+]Tab by preventing
- // switching to keyboard mode.
- requestFocus();
- }
- }
-
private void runDismissAnimation(PendingAnimation pendingAnim) {
AnimatorPlaybackController controller = AnimatorPlaybackController.wrap(
pendingAnim.anim, DISMISS_TASK_DURATION);
@@ -1285,6 +1276,7 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
private void onChildViewsChanged() {
final int childCount = getChildCount();
mClearAllButton.setVisibility(childCount == 0 ? INVISIBLE : VISIBLE);
+ setFocusable(childCount != 0);
}
public void revealClearAllButton() {
@@ -1315,8 +1307,9 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
super.onInitializeAccessibilityEvent(event);
if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_SCROLLED) {
- event.setFromIndex(getCurrentPage());
- event.setToIndex(getCurrentPage());
+ final int visiblePageNumber = getChildCount() - getCurrentPage() - 1;
+ event.setFromIndex(visiblePageNumber);
+ event.setToIndex(visiblePageNumber);
event.setItemCount(getChildCount());
}
}
diff --git a/quickstep/src/com/android/quickstep/views/RecentsViewContainer.java b/quickstep/src/com/android/quickstep/views/RecentsViewContainer.java
index 3391214de..31c8b6448 100644
--- a/quickstep/src/com/android/quickstep/views/RecentsViewContainer.java
+++ b/quickstep/src/com/android/quickstep/views/RecentsViewContainer.java
@@ -113,8 +113,15 @@ public class RecentsViewContainer extends InsettableFrameLayout {
@Override
public void addFocusables(ArrayList<View> views, int direction, int focusableMode) {
- // Carousel is first in tab order.
- views.add(mRecentsView);
- views.add(mClearAllButton);
+ if (mRecentsView.getChildCount() > 0) {
+ // Carousel is first in tab order.
+ views.add(mRecentsView);
+ views.add(mClearAllButton);
+ }
+ }
+
+ public boolean requestFocus(int direction, Rect previouslyFocusedRect) {
+ return mRecentsView.requestFocus(direction, previouslyFocusedRect) ||
+ super.requestFocus(direction, previouslyFocusedRect);
}
} \ No newline at end of file
diff --git a/quickstep/src/com/android/quickstep/views/TaskView.java b/quickstep/src/com/android/quickstep/views/TaskView.java
index 213d9cb59..5413a1319 100644
--- a/quickstep/src/com/android/quickstep/views/TaskView.java
+++ b/quickstep/src/com/android/quickstep/views/TaskView.java
@@ -325,7 +325,8 @@ public class TaskView extends FrameLayout implements TaskCallbacks, PageCallback
final AccessibilityNodeInfo.CollectionItemInfo itemInfo =
AccessibilityNodeInfo.CollectionItemInfo.obtain(
- 0, 1, recentsView.indexOfChild(this), 1, false);
+ 0, 1, recentsView.getChildCount() - recentsView.indexOfChild(this) - 1, 1,
+ false);
info.setCollectionItemInfo(itemInfo);
}
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 631626f44..2b760f349 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -45,7 +45,7 @@
<style name="LauncherTheme" parent="@style/BaseLauncherThemeWithCustomAttrs"></style>
- <style name="LauncherThemeDarkText" parent="@style/LauncherTheme">
+ <style name="LauncherTheme.DarkText" parent="@style/LauncherTheme">
<item name="workspaceTextColor">#FF212121</item>
<item name="workspaceShadowColor">@android:color/transparent</item>
<item name="workspaceAmbientShadowColor">@android:color/transparent</item>
@@ -70,6 +70,15 @@
<item name="isMainColorDark">true</item>
</style>
+ <style name="LauncherThemeDark.DarKText" parent="@style/LauncherThemeDark">
+ <item name="workspaceTextColor">#FF212121</item>
+ <item name="workspaceShadowColor">@android:color/transparent</item>
+ <item name="workspaceAmbientShadowColor">@android:color/transparent</item>
+ <item name="workspaceKeyShadowColor">@android:color/transparent</item>
+ <item name="isWorkspaceDarkText">true</item>
+ <item name="workspaceStatusBarScrim">@null</item>
+ </style>
+
<!--
Theme overrides to element on homescreen, i.e., which are drawn on top on wallpaper.
Various foreground colors are overridden to be workspaceTextColor so that they are properly
diff --git a/src/com/android/launcher3/BaseDraggingActivity.java b/src/com/android/launcher3/BaseDraggingActivity.java
index d9e7d2033..8af9acc24 100644
--- a/src/com/android/launcher3/BaseDraggingActivity.java
+++ b/src/com/android/launcher3/BaseDraggingActivity.java
@@ -90,11 +90,11 @@ public abstract class BaseDraggingActivity extends BaseActivity
protected int getThemeRes(WallpaperColorInfo wallpaperColorInfo) {
if (wallpaperColorInfo.isDark()) {
- return R.style.LauncherThemeDark;
- } else if (wallpaperColorInfo.supportsDarkText()) {
- return R.style.LauncherThemeDarkText;
+ return wallpaperColorInfo.supportsDarkText() ?
+ R.style.LauncherThemeDark_DarKText : R.style.LauncherThemeDark;
} else {
- return R.style.LauncherTheme;
+ return wallpaperColorInfo.supportsDarkText() ?
+ R.style.LauncherTheme_DarkText : R.style.LauncherTheme;
}
}
diff --git a/src/com/android/launcher3/LauncherState.java b/src/com/android/launcher3/LauncherState.java
index 76681f280..5b010dc2d 100644
--- a/src/com/android/launcher3/LauncherState.java
+++ b/src/com/android/launcher3/LauncherState.java
@@ -18,11 +18,11 @@ package com.android.launcher3;
import static android.view.View.IMPORTANT_FOR_ACCESSIBILITY_AUTO;
import static android.view.View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS;
import static android.view.accessibility.AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED;
+
import static com.android.launcher3.anim.Interpolators.ACCEL_2;
import static com.android.launcher3.states.RotationHelper.REQUEST_NONE;
import android.graphics.Rect;
-import android.view.View;
import android.view.animation.Interpolator;
import com.android.launcher3.states.SpringLoadedState;
@@ -196,10 +196,6 @@ public class LauncherState {
public void onStateDisabled(Launcher launcher) { }
- public View getFinalFocus(Launcher launcher) {
- return launcher.getWorkspace();
- }
-
public int getVisibleElements(Launcher launcher) {
if (launcher.getDeviceProfile().isVerticalBarLayout()) {
return HOTSEAT_ICONS | VERTICAL_SWIPE_INDICATOR;
diff --git a/src/com/android/launcher3/LauncherStateManager.java b/src/com/android/launcher3/LauncherStateManager.java
index 3fcdee934..b5eef8bd3 100644
--- a/src/com/android/launcher3/LauncherStateManager.java
+++ b/src/com/android/launcher3/LauncherStateManager.java
@@ -17,6 +17,7 @@
package com.android.launcher3;
import static android.view.View.VISIBLE;
+
import static com.android.launcher3.LauncherState.NORMAL;
import static com.android.launcher3.anim.AnimatorSetBuilder.ANIM_OVERVIEW_FADE;
import static com.android.launcher3.anim.AnimatorSetBuilder.ANIM_OVERVIEW_SCALE;
@@ -35,7 +36,6 @@ import android.animation.AnimatorSet;
import android.os.Handler;
import android.os.Looper;
import android.support.annotation.IntDef;
-import android.view.View;
import com.android.launcher3.anim.AnimationSuccessListener;
import com.android.launcher3.anim.AnimatorPlaybackController;
@@ -251,7 +251,7 @@ public class LauncherStateManager {
prepareForAtomicAnimation(mState, state, builder);
AnimatorSet animation = createAnimationToNewWorkspaceInternal(
state, builder, onCompleteRunnable);
- Runnable runnable = new StartAnimRunnable(animation, state.getFinalFocus(mLauncher));
+ Runnable runnable = new StartAnimRunnable(animation);
if (delay > 0) {
mUiHandler.postDelayed(runnable, delay);
} else {
@@ -348,20 +348,15 @@ public class LauncherStateManager {
}
@Override
- public void onAnimationEnd(Animator animation) {
- super.onAnimationEnd(animation);
- for (int i = mListeners.size() - 1; i >= 0; i--) {
- mListeners.get(i).onStateTransitionComplete(state);
- }
- }
-
- @Override
public void onAnimationSuccess(Animator animator) {
// Run any queued runnables
if (onCompleteRunnable != null) {
onCompleteRunnable.run();
}
onStateTransitionEnd(state);
+ for (int i = mListeners.size() - 1; i >= 0; i--) {
+ mListeners.get(i).onStateTransitionComplete(state);
+ }
}
});
mConfig.setAnimation(animation, state);
@@ -397,6 +392,8 @@ public class LauncherStateManager {
}
UiFactory.onLauncherStateOrResumeChanged(mLauncher);
+
+ mLauncher.getDragLayer().requestFocus();
}
public void onWindowFocusChanged() {
@@ -480,11 +477,9 @@ public class LauncherStateManager {
private class StartAnimRunnable implements Runnable {
private final AnimatorSet mAnim;
- private final View mViewToFocus;
- public StartAnimRunnable(AnimatorSet anim, View viewToFocus) {
+ public StartAnimRunnable(AnimatorSet anim) {
mAnim = anim;
- mViewToFocus = viewToFocus;
}
@Override
@@ -492,9 +487,6 @@ public class LauncherStateManager {
if (mConfig.mCurrentAnimation != mAnim) {
return;
}
- if (mViewToFocus != null) {
- mViewToFocus.requestFocus();
- }
mAnim.start();
}
}
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index 42e8fde3b..06eb82e3e 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -1552,6 +1552,14 @@ public class Workspace extends PagedView<WorkspacePageIndicator>
public DragView beginDragShared(View child, DragSource source, ItemInfo dragObject,
DragPreviewProvider previewProvider, DragOptions dragOptions) {
+ float iconScale = 1f;
+ if (child instanceof BubbleTextView) {
+ Drawable icon = ((BubbleTextView) child).getIcon();
+ if (icon instanceof FastBitmapDrawable) {
+ iconScale = ((FastBitmapDrawable) icon).getAnimatedScale();
+ }
+ }
+
child.clearFocus();
child.setPressed(false);
mOutlineProvider = previewProvider;
@@ -1603,7 +1611,7 @@ public class Workspace extends PagedView<WorkspacePageIndicator>
}
DragView dv = mDragController.startDrag(b, dragLayerX, dragLayerY, source,
- dragObject, dragVisualizeOffset, dragRect, scale, dragOptions);
+ dragObject, dragVisualizeOffset, dragRect, scale * iconScale, scale, dragOptions);
dv.setIntrinsicIconScaleFactor(dragOptions.intrinsicIconScaleFactor);
return dv;
}
diff --git a/src/com/android/launcher3/dragndrop/DragController.java b/src/com/android/launcher3/dragndrop/DragController.java
index 5c6946c47..8a216fc17 100644
--- a/src/com/android/launcher3/dragndrop/DragController.java
+++ b/src/com/android/launcher3/dragndrop/DragController.java
@@ -138,7 +138,7 @@ public class DragController implements DragDriver.EventListener, TouchController
*/
public DragView startDrag(Bitmap b, int dragLayerX, int dragLayerY,
DragSource source, ItemInfo dragInfo, Point dragOffset, Rect dragRegion,
- float initialDragViewScale, DragOptions options) {
+ float initialDragViewScale, float dragViewScaleOnDrop, DragOptions options) {
if (PROFILE_DRAWING_DURING_DRAG) {
android.os.Debug.startMethodTracing("Launcher");
}
@@ -169,7 +169,7 @@ public class DragController implements DragDriver.EventListener, TouchController
final float scaleDps = mIsInPreDrag
? res.getDimensionPixelSize(R.dimen.pre_drag_view_scale) : 0f;
final DragView dragView = mDragObject.dragView = new DragView(mLauncher, b, registrationX,
- registrationY, initialDragViewScale, scaleDps);
+ registrationY, initialDragViewScale, dragViewScaleOnDrop, scaleDps);
dragView.setItemInfo(dragInfo);
mDragObject.dragComplete = false;
if (mOptions.isAccessibleDrag) {
diff --git a/src/com/android/launcher3/dragndrop/DragView.java b/src/com/android/launcher3/dragndrop/DragView.java
index 1e5f8545b..551567ae7 100644
--- a/src/com/android/launcher3/dragndrop/DragView.java
+++ b/src/com/android/launcher3/dragndrop/DragView.java
@@ -89,6 +89,7 @@ public class DragView extends View {
private final int mRegistrationX;
private final int mRegistrationY;
private final float mInitialScale;
+ private final float mScaleOnDrop;
private final int[] mTempLoc = new int[2];
private Point mDragVisualizeOffset = null;
@@ -131,7 +132,7 @@ public class DragView extends View {
* @param registrationY The y coordinate of the registration point.
*/
public DragView(Launcher launcher, Bitmap bitmap, int registrationX, int registrationY,
- final float initialScale, final float finalScaleDps) {
+ final float initialScale, final float scaleOnDrop, final float finalScaleDps) {
super(launcher);
mLauncher = launcher;
mDragLayer = launcher.getDragLayer();
@@ -180,6 +181,7 @@ public class DragView extends View {
mRegistrationY = registrationY;
mInitialScale = initialScale;
+ mScaleOnDrop = scaleOnDrop;
// Force a measure, because Workspace uses getMeasuredHeight() before the layout pass
int ms = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
@@ -596,7 +598,7 @@ public class DragView extends View {
public void animateTo(int toTouchX, int toTouchY, Runnable onCompleteRunnable, int duration) {
mTempLoc[0] = toTouchX - mRegistrationX;
mTempLoc[1] = toTouchY - mRegistrationY;
- mDragLayer.animateViewIntoPosition(this, mTempLoc, 1f, mInitialScale, mInitialScale,
+ mDragLayer.animateViewIntoPosition(this, mTempLoc, 1f, mScaleOnDrop, mScaleOnDrop,
DragLayer.ANIMATION_END_DISAPPEAR, onCompleteRunnable, duration);
}
diff --git a/src/com/android/launcher3/states/SpringLoadedState.java b/src/com/android/launcher3/states/SpringLoadedState.java
index aa7d0d5a3..35f7f8831 100644
--- a/src/com/android/launcher3/states/SpringLoadedState.java
+++ b/src/com/android/launcher3/states/SpringLoadedState.java
@@ -19,7 +19,6 @@ import static com.android.launcher3.LauncherAnimUtils.SPRING_LOADED_TRANSITION_M
import static com.android.launcher3.states.RotationHelper.REQUEST_LOCK;
import android.graphics.Rect;
-import android.view.View;
import com.android.launcher3.DeviceProfile;
import com.android.launcher3.InstallShortcutReceiver;
@@ -98,9 +97,4 @@ public class SpringLoadedState extends LauncherState {
InstallShortcutReceiver.disableAndFlushInstallQueue(
InstallShortcutReceiver.FLAG_DRAG_AND_DROP, launcher);
}
-
- @Override
- public View getFinalFocus(Launcher launcher) {
- return null;
- }
}
diff --git a/src/com/android/launcher3/widget/PendingItemDragHelper.java b/src/com/android/launcher3/widget/PendingItemDragHelper.java
index aa5b7855c..74ab14f55 100644
--- a/src/com/android/launcher3/widget/PendingItemDragHelper.java
+++ b/src/com/android/launcher3/widget/PendingItemDragHelper.java
@@ -149,7 +149,7 @@ public class PendingItemDragHelper extends DragPreviewProvider {
// Start the drag
launcher.getDragController().startDrag(preview, dragLayerX, dragLayerY, source, mAddInfo,
- dragOffset, dragRegion, scale, options);
+ dragOffset, dragRegion, scale, scale, options);
}
@Override
diff --git a/src_ui_overrides/com/android/launcher3/uioverrides/AllAppsState.java b/src_ui_overrides/com/android/launcher3/uioverrides/AllAppsState.java
index 4a2f544e8..f7bb25456 100644
--- a/src_ui_overrides/com/android/launcher3/uioverrides/AllAppsState.java
+++ b/src_ui_overrides/com/android/launcher3/uioverrides/AllAppsState.java
@@ -19,8 +19,6 @@ import static com.android.launcher3.LauncherAnimUtils.ALL_APPS_TRANSITION_MS;
import static com.android.launcher3.allapps.DiscoveryBounce.HOME_BOUNCE_SEEN;
import static com.android.launcher3.anim.Interpolators.DEACCEL_2;
-import android.view.View;
-
import com.android.launcher3.AbstractFloatingView;
import com.android.launcher3.Launcher;
import com.android.launcher3.LauncherState;
@@ -68,11 +66,6 @@ public class AllAppsState extends LauncherState {
}
@Override
- public View getFinalFocus(Launcher launcher) {
- return launcher.getAppsView();
- }
-
- @Override
public float[] getWorkspaceScaleAndTranslation(Launcher launcher) {
return new float[] { 1f, 0,
-launcher.getAllAppsController().getShiftRange() * PARALLAX_COEFFICIENT};