Loading quickstep/src/com/android/launcher3/uioverrides/QuickstepInteractionHandler.java 0 → 100644 +63 −0 Original line number Diff line number Diff line /* * Copyright (C) 2021 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.uioverrides; import android.app.ActivityOptions; import android.app.PendingIntent; import android.content.Intent; import android.util.Log; import android.util.Pair; import android.view.View; import android.widget.RemoteViews; import com.android.launcher3.util.ActivityOptionsWrapper; import com.android.launcher3.widget.LauncherAppWidgetHostView; /** Provides a Quickstep specific animation when launching an activity from an app widget. */ class QuickstepInteractionHandler implements RemoteViews.InteractionHandler { private static final String TAG = "QuickstepInteractionHandler"; private final QuickstepLauncher mLauncher; QuickstepInteractionHandler(QuickstepLauncher launcher) { mLauncher = launcher; } @Override public boolean onInteraction(View view, PendingIntent pendingIntent, RemoteViews.RemoteResponse remoteResponse) { LauncherAppWidgetHostView hostView = findHostViewAncestor(view); if (hostView == null) { Log.e(TAG, "View did not have a LauncherAppWidgetHostView ancestor."); return RemoteViews.startPendingIntent(hostView, pendingIntent, remoteResponse.getLaunchOptions(view)); } Pair<Intent, ActivityOptions> options = remoteResponse.getLaunchOptions(hostView); ActivityOptionsWrapper activityOptions = mLauncher.getAppTransitionManager() .getActivityLaunchOptions(mLauncher, hostView); options = Pair.create(options.first, activityOptions.options); return RemoteViews.startPendingIntent(hostView, pendingIntent, options); } private LauncherAppWidgetHostView findHostViewAncestor(View v) { while (v != null) { if (v instanceof LauncherAppWidgetHostView) return (LauncherAppWidgetHostView) v; v = (View) v.getParent(); } return null; } } quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java +13 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SY import android.content.Intent; import android.content.SharedPreferences; import android.content.res.Configuration; import android.os.SystemProperties; import android.view.HapticFeedbackConstants; import android.view.View; Loading Loading @@ -71,6 +72,7 @@ import com.android.launcher3.util.OnboardingPrefs; import com.android.launcher3.util.TouchController; import com.android.launcher3.util.UiThreadHelper; import com.android.launcher3.util.UiThreadHelper.AsyncCommand; import com.android.launcher3.widget.LauncherAppWidgetHost; import com.android.quickstep.SysUINavigationMode; import com.android.quickstep.SysUINavigationMode.Mode; import com.android.quickstep.SystemUiProxy; Loading @@ -88,6 +90,9 @@ import java.util.stream.Stream; public class QuickstepLauncher extends BaseQuickstepLauncher { private static final boolean ENABLE_APP_WIDGET_LAUNCH_ANIMATION = SystemProperties.getBoolean("persist.debug.quickstep_app_widget_launch", false); public static final boolean GO_LOW_RAM_RECENTS_ENABLED = false; /** * Reusable command for applying the shelf height on the background thread. Loading Loading @@ -320,6 +325,14 @@ public class QuickstepLauncher extends BaseQuickstepLauncher { return new QuickstepAtomicAnimationFactory(this); } protected LauncherAppWidgetHost createAppWidgetHost() { LauncherAppWidgetHost appWidgetHost = super.createAppWidgetHost(); if (ENABLE_APP_WIDGET_LAUNCH_ANIMATION) { appWidgetHost.setInteractionHandler(new QuickstepInteractionHandler(this)); } return appWidgetHost; } private static final class LauncherTaskViewController extends TaskViewTouchController<Launcher> { Loading src/com/android/launcher3/Launcher.java +6 −2 Original line number Diff line number Diff line Loading @@ -436,8 +436,7 @@ public class Launcher extends StatefulActivity<LauncherState> implements Launche mOnboardingPrefs = createOnboardingPrefs(mSharedPrefs); mAppWidgetManager = new WidgetManagerHelper(this); mAppWidgetHost = new LauncherAppWidgetHost(this, appWidgetId -> getWorkspace().removeWidget(appWidgetId)); mAppWidgetHost = createAppWidgetHost(); mAppWidgetHost.startListening(); inflateRootView(R.layout.launcher); Loading Loading @@ -1428,6 +1427,11 @@ public class Launcher extends StatefulActivity<LauncherState> implements Launche return mAppWidgetHost; } protected LauncherAppWidgetHost createAppWidgetHost() { return new LauncherAppWidgetHost(this, appWidgetId -> getWorkspace().removeWidget(appWidgetId)); } public LauncherModel getModel() { return mModel; } Loading Loading
quickstep/src/com/android/launcher3/uioverrides/QuickstepInteractionHandler.java 0 → 100644 +63 −0 Original line number Diff line number Diff line /* * Copyright (C) 2021 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.uioverrides; import android.app.ActivityOptions; import android.app.PendingIntent; import android.content.Intent; import android.util.Log; import android.util.Pair; import android.view.View; import android.widget.RemoteViews; import com.android.launcher3.util.ActivityOptionsWrapper; import com.android.launcher3.widget.LauncherAppWidgetHostView; /** Provides a Quickstep specific animation when launching an activity from an app widget. */ class QuickstepInteractionHandler implements RemoteViews.InteractionHandler { private static final String TAG = "QuickstepInteractionHandler"; private final QuickstepLauncher mLauncher; QuickstepInteractionHandler(QuickstepLauncher launcher) { mLauncher = launcher; } @Override public boolean onInteraction(View view, PendingIntent pendingIntent, RemoteViews.RemoteResponse remoteResponse) { LauncherAppWidgetHostView hostView = findHostViewAncestor(view); if (hostView == null) { Log.e(TAG, "View did not have a LauncherAppWidgetHostView ancestor."); return RemoteViews.startPendingIntent(hostView, pendingIntent, remoteResponse.getLaunchOptions(view)); } Pair<Intent, ActivityOptions> options = remoteResponse.getLaunchOptions(hostView); ActivityOptionsWrapper activityOptions = mLauncher.getAppTransitionManager() .getActivityLaunchOptions(mLauncher, hostView); options = Pair.create(options.first, activityOptions.options); return RemoteViews.startPendingIntent(hostView, pendingIntent, options); } private LauncherAppWidgetHostView findHostViewAncestor(View v) { while (v != null) { if (v instanceof LauncherAppWidgetHostView) return (LauncherAppWidgetHostView) v; v = (View) v.getParent(); } return null; } }
quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java +13 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SY import android.content.Intent; import android.content.SharedPreferences; import android.content.res.Configuration; import android.os.SystemProperties; import android.view.HapticFeedbackConstants; import android.view.View; Loading Loading @@ -71,6 +72,7 @@ import com.android.launcher3.util.OnboardingPrefs; import com.android.launcher3.util.TouchController; import com.android.launcher3.util.UiThreadHelper; import com.android.launcher3.util.UiThreadHelper.AsyncCommand; import com.android.launcher3.widget.LauncherAppWidgetHost; import com.android.quickstep.SysUINavigationMode; import com.android.quickstep.SysUINavigationMode.Mode; import com.android.quickstep.SystemUiProxy; Loading @@ -88,6 +90,9 @@ import java.util.stream.Stream; public class QuickstepLauncher extends BaseQuickstepLauncher { private static final boolean ENABLE_APP_WIDGET_LAUNCH_ANIMATION = SystemProperties.getBoolean("persist.debug.quickstep_app_widget_launch", false); public static final boolean GO_LOW_RAM_RECENTS_ENABLED = false; /** * Reusable command for applying the shelf height on the background thread. Loading Loading @@ -320,6 +325,14 @@ public class QuickstepLauncher extends BaseQuickstepLauncher { return new QuickstepAtomicAnimationFactory(this); } protected LauncherAppWidgetHost createAppWidgetHost() { LauncherAppWidgetHost appWidgetHost = super.createAppWidgetHost(); if (ENABLE_APP_WIDGET_LAUNCH_ANIMATION) { appWidgetHost.setInteractionHandler(new QuickstepInteractionHandler(this)); } return appWidgetHost; } private static final class LauncherTaskViewController extends TaskViewTouchController<Launcher> { Loading
src/com/android/launcher3/Launcher.java +6 −2 Original line number Diff line number Diff line Loading @@ -436,8 +436,7 @@ public class Launcher extends StatefulActivity<LauncherState> implements Launche mOnboardingPrefs = createOnboardingPrefs(mSharedPrefs); mAppWidgetManager = new WidgetManagerHelper(this); mAppWidgetHost = new LauncherAppWidgetHost(this, appWidgetId -> getWorkspace().removeWidget(appWidgetId)); mAppWidgetHost = createAppWidgetHost(); mAppWidgetHost.startListening(); inflateRootView(R.layout.launcher); Loading Loading @@ -1428,6 +1427,11 @@ public class Launcher extends StatefulActivity<LauncherState> implements Launche return mAppWidgetHost; } protected LauncherAppWidgetHost createAppWidgetHost() { return new LauncherAppWidgetHost(this, appWidgetId -> getWorkspace().removeWidget(appWidgetId)); } public LauncherModel getModel() { return mModel; } Loading