QuickSwitch Compat Q to U (#3948)
Initial support quickstep, Android versions from Q to U, ensuring a smooth and efficient user experience. Enjoy effortless navigation and swift app switching on your Android device with QuickSwitch's compatibility across the Q, R, S, T, and U. Co-authored-by: Goooler <wangzongler@gmail.com> Co-authored-by: 无言 <57122860+liu-wanshun@users.noreply.github.com>
This commit is contained in:
+78
@@ -0,0 +1,78 @@
|
||||
package app.lawnchair.compatlib.thirteen;
|
||||
|
||||
import static android.app.ActivityTaskManager.getService;
|
||||
|
||||
import android.app.ActivityTaskManager;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Rect;
|
||||
import android.os.RemoteException;
|
||||
import android.util.Log;
|
||||
import android.view.IRecentsAnimationController;
|
||||
import android.view.IRecentsAnimationRunner;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
import android.window.TaskSnapshot;
|
||||
import app.lawnchair.compatlib.RecentsAnimationRunnerCompat;
|
||||
import app.lawnchair.compatlib.twelve.ActivityManagerCompatVS;
|
||||
|
||||
public class ActivityManagerCompatVT extends ActivityManagerCompatVS {
|
||||
|
||||
private static final String TAG = "ActivityManagerCompatVT";
|
||||
private final ActivityTaskManager mAtm = ActivityTaskManager.getInstance();
|
||||
|
||||
@Override
|
||||
public void startRecentsActivity(
|
||||
Intent intent, long eventTime, RecentsAnimationRunnerCompat runnerCompat) {
|
||||
IRecentsAnimationRunner runner = null;
|
||||
if (runnerCompat != null) {
|
||||
runner =
|
||||
new IRecentsAnimationRunner.Stub() {
|
||||
@Override
|
||||
public void onAnimationStart(
|
||||
IRecentsAnimationController controller,
|
||||
RemoteAnimationTarget[] apps,
|
||||
RemoteAnimationTarget[] wallpapers,
|
||||
Rect homeContentInsets,
|
||||
Rect minimizedHomeBounds) {
|
||||
runnerCompat.onAnimationStart(
|
||||
controller,
|
||||
apps,
|
||||
wallpapers,
|
||||
homeContentInsets,
|
||||
minimizedHomeBounds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAnimationCanceled(
|
||||
int[] taskIds, TaskSnapshot[] taskSnapshots) {
|
||||
runnerCompat.onAnimationCanceled(taskIds, taskSnapshots);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTasksAppeared(RemoteAnimationTarget[] apps) {
|
||||
runnerCompat.onTasksAppeared(apps);
|
||||
}
|
||||
};
|
||||
}
|
||||
try {
|
||||
getService().startRecentsActivity(intent, eventTime, runner);
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "Failed to cancel recents animation", e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public TaskSnapshot getTaskSnapshot(
|
||||
int taskId, boolean isLowResolution, boolean takeSnapshotIfNeeded) {
|
||||
try {
|
||||
// android13 qpr1
|
||||
return getService()
|
||||
.getTaskSnapshot(taskId, isLowResolution, true /* takeSnapshotIfNeeded */);
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "Failed to getTaskSnapshot", e);
|
||||
return null;
|
||||
} catch (NoSuchMethodError e) {
|
||||
// android13/12
|
||||
return super.getTaskSnapshot(taskId, isLowResolution, takeSnapshotIfNeeded);
|
||||
}
|
||||
}
|
||||
}
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
package app.lawnchair.compatlib.thirteen;
|
||||
|
||||
import android.app.ActivityOptions;
|
||||
import android.content.Context;
|
||||
import android.os.Handler;
|
||||
import android.util.Log;
|
||||
import android.view.RemoteAnimationAdapter;
|
||||
import android.window.RemoteTransition;
|
||||
import app.lawnchair.compatlib.twelve.ActivityOptionsCompatVS;
|
||||
|
||||
public class ActivityOptionsCompatVT extends ActivityOptionsCompatVS {
|
||||
|
||||
private static final String TAG = "ActivityOptionsCompatVT";
|
||||
|
||||
@Override
|
||||
public ActivityOptions makeCustomAnimation(
|
||||
Context context,
|
||||
int enterResId,
|
||||
int exitResId,
|
||||
Runnable callback,
|
||||
Handler callbackHandler) {
|
||||
return super.makeCustomAnimation(context, enterResId, exitResId, callback, callbackHandler);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActivityOptions makeRemoteAnimation(
|
||||
RemoteAnimationAdapter remoteAnimationAdapter,
|
||||
Object remoteTransition,
|
||||
String debugName) {
|
||||
Log.e(TAG, "makeRemoteAnimation: " + debugName);
|
||||
return ActivityOptions.makeRemoteAnimation(
|
||||
remoteAnimationAdapter, (RemoteTransition) remoteTransition);
|
||||
}
|
||||
}
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
package app.lawnchair.compatlib.thirteen;
|
||||
|
||||
import android.app.IApplicationThread;
|
||||
import android.window.IRemoteTransition;
|
||||
import android.window.RemoteTransition;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import app.lawnchair.compatlib.ActivityManagerCompat;
|
||||
import app.lawnchair.compatlib.ActivityOptionsCompat;
|
||||
import app.lawnchair.compatlib.RemoteTransitionCompat;
|
||||
import app.lawnchair.compatlib.twelve.QuickstepCompatFactoryVS;
|
||||
|
||||
public class QuickstepCompatFactoryVT extends QuickstepCompatFactoryVS {
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public ActivityManagerCompat getActivityManagerCompat() {
|
||||
return new ActivityManagerCompatVT();
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public ActivityOptionsCompat getActivityOptionsCompat() {
|
||||
return new ActivityOptionsCompatVT();
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public RemoteTransitionCompat getRemoteTransitionCompat() {
|
||||
return new RemoteTransitionCompat() {
|
||||
@Override
|
||||
public RemoteTransition getRemoteTransition(
|
||||
@NonNull IRemoteTransition remoteTransition,
|
||||
@Nullable IApplicationThread appThread,
|
||||
@Nullable String debugName) {
|
||||
return new RemoteTransition(remoteTransition, appThread);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user