Android8.1 Launcher 3引き出しを外す(一)
6672 ワード
Android8.1 Launcher 3引き出しを外す(一)
現在の需要は8.1のlauncherを国内でよく見られるように修正し、すべてのappをworkspaceに表示することですが、ネットで調べてみると、この方面の資料が見つからず、自分でゆっくり見るしかありません.このブログを記録してください.1: Launcher3\src\com\android\launcher3\LauncherAppState.JAva:メソッドを追加します.
2: Launcher3\src\com\android\launcher3\InvariantDeviceProfile.JAva->isAllAppsButtonRank():6.0で、この方法はHotSeat.JAvaで
3:HotSeatでAllappキーのロードLauncher 3srccomandroidlauncher 3HotSeatを外す.java –>resetLayout():
4:すべてのアプリケーションを第1層Launcher 3srccomandroidlauncher 3modelLoaderTaskに配置する.java –> run();
verifyApplications()の追加:
必要なのはPendingInstallShortcutInfoとInstallShortcutReceiver.LazyShortcutsProviderをpublicに変更しました.ここまで来れば初歩的にいいです.しかし、運行してみたらまだだめだった.そこでlogを印刷して問題を探します;AddWorkspaceを見つけたJAvaのexecute()メソッドは、BaseModelUpdateTaskのため実行されていません.JAvaのrun()の判断問題は、実行されていないため、怠け者になって、まずreturnを注釈します.
やっと引き出しのappをworkspaceに入れて、次は最適化して引き出しを隠すことができて、8.1の上で滑っても引き出しを呼び出すことができるので、これはまだ研究しています.次のタスクは依然として楽ではありません.また、新しいアプリケーションが追加されたときにWorkspaceを更新し、時間通りに削除するオプションを削除し、引き出しの表示を禁止する必要があります.本文はこのブログを参考にした:Android 7.0 Launcher 3はアプリケーションの引き出しを取り除くが、このブログは7.0に基づいており、8.1とは少し異なり、特にアプリケーションをロードする場所(LoaderTask.java)である.
現在の需要は8.1のlauncherを国内でよく見られるように修正し、すべてのappをworkspaceに表示することですが、ネットで調べてみると、この方面の資料が見つからず、自分でゆっくり見るしかありません.このブログを記録してください.1: Launcher3\src\com\android\launcher3\LauncherAppState.JAva:メソッドを追加します.
public static boolean isDisableAllApps() {
return true;
}
2: Launcher3\src\com\android\launcher3\InvariantDeviceProfile.JAva->isAllAppsButtonRank():6.0で、この方法はHotSeat.JAvaで
public boolean isAllAppsButtonRank(int rank) {
if (LauncherAppState.isDisableAllApps()) {
return false;
}
return rank == getAllAppsButtonRank();
}
3:HotSeatでAllappキーのロードLauncher 3srccomandroidlauncher 3HotSeatを外す.java –>resetLayout():
void resetLayout() {
mContent.removeAllViewsInLayout();
//
if (LauncherAppState.isDisableAllApps()) {
return;
}
if (!FeatureFlags.NO_ALL_APPS_ICON) {
// Add the Apps button
Context context = getContext();
DeviceProfile grid = mLauncher.getDeviceProfile();
int allAppsButtonRank = grid.inv.getAllAppsButtonRank();
......
}
4:すべてのアプリケーションを第1層Launcher 3srccomandroidlauncher 3modelLoaderTaskに配置する.java –> run();
......
// second step
if (DEBUG_LOADERS) Log.d(TAG, "step 2.1: loading all apps");
loadAllApps();
// APP
if (LauncherAppState.isDisableAllApps()) {
verifyApplications();
}
if (DEBUG_LOADERS) Log.d(TAG, "step 2.2: Binding all apps");
verifyNotStopped();
mResults.bindAllApps();
......
verifyApplications()の追加:
private void verifyApplications() {
final Context context = mApp.getContext();
ArrayList.PendingInstallShortcutInfo> items = new ArrayList<>();
synchronized (this) {
for (AppInfo app : mBgAllAppsList.data) {
Intent data = app.getIntent();
data.putExtra(Intent.EXTRA_SHORTCUT_INTENT, data);
data.putExtra(Intent.EXTRA_SHORTCUT_ICON, app.iconBitmap);
data.putExtra(Intent.EXTRA_SHORTCUT_NAME, app.title);
InstallShortcutReceiver.PendingInstallShortcutInfo info = new InstallShortcutReceiver.PendingInstallShortcutInfo(
data, app.user, context);
items.add(info);
}
}
if (!items.isEmpty()) {
mApp.getModel().addAndBindAddedWorkspaceItems(
new InstallShortcutReceiver.LazyShortcutsProvider(context.getApplicationContext(), items));
}
}
必要なのはPendingInstallShortcutInfoとInstallShortcutReceiver.LazyShortcutsProviderをpublicに変更しました.ここまで来れば初歩的にいいです.しかし、運行してみたらまだだめだった.そこでlogを印刷して問題を探します;AddWorkspaceを見つけたJAvaのexecute()メソッドは、BaseModelUpdateTaskのため実行されていません.JAvaのrun()の判断問題は、実行されていないため、怠け者になって、まずreturnを注釈します.
@Override
public final void run() {
if (!mModel.isModelLoaded()) {
if (DEBUG_TASKS) {
Log.d(TAG, "Ignoring model task since loader is pending=" + this);
}
// Loader has not yet run.
return;
}
execute(mApp, mDataModel, mAllAppsList);
}
やっと引き出しのappをworkspaceに入れて、次は最適化して引き出しを隠すことができて、8.1の上で滑っても引き出しを呼び出すことができるので、これはまだ研究しています.次のタスクは依然として楽ではありません.また、新しいアプリケーションが追加されたときにWorkspaceを更新し、時間通りに削除するオプションを削除し、引き出しの表示を禁止する必要があります.本文はこのブログを参考にした:Android 7.0 Launcher 3はアプリケーションの引き出しを取り除くが、このブログは7.0に基づいており、8.1とは少し異なり、特にアプリケーションをロードする場所(LoaderTask.java)である.