Loading src/com/android/launcher3/graphics/LauncherPreviewRenderer.java +244 −244 Original line number Diff line number Diff line Loading @@ -117,7 +117,8 @@ import java.util.concurrent.TimeoutException; * 4) Measure and draw the view on a canvas */ @TargetApi(Build.VERSION_CODES.O) public class LauncherPreviewRenderer { public class LauncherPreviewRenderer extends ContextThemeWrapper implements ActivityContext, WorkspaceLayoutManager, LayoutInflater.Factory2 { private static final String TAG = "LauncherPreviewRenderer"; Loading Loading @@ -211,10 +212,14 @@ public class LauncherPreviewRenderer { private final DeviceProfile mDp; private final boolean mMigrated; private final Rect mInsets; private final WorkspaceItemInfo mWorkspaceItemInfo; private final LayoutInflater mHomeElementInflater; private final InsettableFrameLayout mRootView; private final Hotseat mHotseat; private final CellLayout mWorkspace; public LauncherPreviewRenderer(Context context, InvariantDeviceProfile idp, boolean migrated) { super(context, R.style.AppTheme); mUiHandler = new Handler(Looper.getMainLooper()); mContext = context; mIdp = idp; Loading @@ -239,26 +244,6 @@ public class LauncherPreviewRenderer { mWorkspaceItemInfo.intent = new Intent(); mWorkspaceItemInfo.contentDescription = mWorkspaceItemInfo.title = context.getString(R.string.label_application); } /** Populate preview and render it. */ public View getRenderedView() { MainThreadRenderer renderer = new MainThreadRenderer(mContext); renderer.populate(); return renderer.mRootView; } private class MainThreadRenderer extends ContextThemeWrapper implements ActivityContext, WorkspaceLayoutManager, LayoutInflater.Factory2 { private final LayoutInflater mHomeElementInflater; private final InsettableFrameLayout mRootView; private final Hotseat mHotseat; private final CellLayout mWorkspace; MainThreadRenderer(Context context) { super(context, R.style.AppTheme); mHomeElementInflater = LayoutInflater.from( new ContextThemeWrapper(this, R.style.HomeScreenElementTheme)); Loading @@ -279,6 +264,20 @@ public class LauncherPreviewRenderer { mDp.workspacePadding.bottom); } /** Populate preview and render it. */ public View getRenderedView() { populate(); return mRootView; } public boolean shouldShowRealLauncherPreview() { return ENABLE_LAUNCHER_PREVIEW_IN_GRID_PICKER.get(); } public boolean shouldShowQsb() { return FeatureFlags.QSB_ON_FIRST_SCREEN; } @Override public View onCreateView(View parent, String name, Context context, AttributeSet attrs) { if ("TextClock".equals(name)) { Loading Loading @@ -343,7 +342,8 @@ public class LauncherPreviewRenderer { addInScreenFromBind(folderIcon, info); } private void inflateAndAddWidgets(LauncherAppWidgetInfo info, private void inflateAndAddWidgets( LauncherAppWidgetInfo info, Map<ComponentKey, AppWidgetProviderInfo> widgetProviderInfoMap) { if (widgetProviderInfoMap == null) { return; Loading @@ -366,8 +366,8 @@ public class LauncherPreviewRenderer { inflateAndAddWidgets(info, widgetItem.widgetInfo); } private void inflateAndAddWidgets(LauncherAppWidgetInfo info, LauncherAppWidgetProviderInfo providerInfo) { private void inflateAndAddWidgets( LauncherAppWidgetInfo info, LauncherAppWidgetProviderInfo providerInfo) { AppWidgetHostView view = new AppWidgetHostView(mContext); view.setAppWidget(-1, providerInfo); view.updateAppWidget(null); Loading Loading @@ -401,7 +401,7 @@ public class LauncherPreviewRenderer { } private void populate() { if (ENABLE_LAUNCHER_PREVIEW_IN_GRID_PICKER.get()) { if (shouldShowRealLauncherPreview()) { WorkspaceFetcher fetcher; PreviewContext previewContext = null; if (mMigrated) { Loading @@ -424,20 +424,17 @@ public class LauncherPreviewRenderer { return; } // Separate the items that are on the current screen, and all the other remaining // items // Separate the items that are on the current screen, and the other remaining items. ArrayList<ItemInfo> currentWorkspaceItems = new ArrayList<>(); ArrayList<ItemInfo> otherWorkspaceItems = new ArrayList<>(); ArrayList<LauncherAppWidgetInfo> currentAppWidgets = new ArrayList<>(); ArrayList<LauncherAppWidgetInfo> otherAppWidgets = new ArrayList<>(); filterCurrentWorkspaceItems(0 /* currentScreenId */, workspaceResult.mWorkspaceItems, currentWorkspaceItems, otherWorkspaceItems); filterCurrentWorkspaceItems(0 /* currentScreenId */, workspaceResult.mAppWidgets, currentAppWidgets, otherAppWidgets); sortWorkspaceItemsSpatially(mIdp, currentWorkspaceItems); for (ItemInfo itemInfo : currentWorkspaceItems) { switch (itemInfo.itemType) { case Favorites.ITEM_TYPE_APPLICATION: Loading @@ -445,7 +442,7 @@ public class LauncherPreviewRenderer { case Favorites.ITEM_TYPE_DEEP_SHORTCUT: inflateAndAddIcon((WorkspaceItemInfo) itemInfo); break; case LauncherSettings.Favorites.ITEM_TYPE_FOLDER: case Favorites.ITEM_TYPE_FOLDER: inflateAndAddFolder((FolderInfo) itemInfo); break; default: Loading @@ -468,7 +465,6 @@ public class LauncherPreviewRenderer { break; } } IntArray ranks = getMissingHotseatRanks(currentWorkspaceItems, mIdp.numHotseatIcons); int count = Math.min(ranks.size(), workspaceResult.mCachedPredictedItems.size()); Loading @@ -476,7 +472,7 @@ public class LauncherPreviewRenderer { AppInfo appInfo = workspaceResult.mCachedPredictedItems.get(i); int rank = ranks.get(i); WorkspaceItemInfo itemInfo = new WorkspaceItemInfo(appInfo); itemInfo.container = LauncherSettings.Favorites.CONTAINER_HOTSEAT_PREDICTION; itemInfo.container = Favorites.CONTAINER_HOTSEAT_PREDICTION; itemInfo.rank = rank; itemInfo.cellX = mHotseat.getCellXFromOrder(rank); itemInfo.cellY = mHotseat.getCellYFromOrder(rank); Loading @@ -503,7 +499,7 @@ public class LauncherPreviewRenderer { } // Add first page QSB if (FeatureFlags.QSB_ON_FIRST_SCREEN) { if (shouldShowQsb()) { View qsb = mHomeElementInflater.inflate( R.layout.search_container_workspace, mWorkspace, false); CellLayout.LayoutParams lp = Loading @@ -517,6 +513,11 @@ public class LauncherPreviewRenderer { mRootView.findViewById(R.id.search_container_all_apps); mRootView.findViewById(R.id.apps_view).setTranslationY( mDp.heightPx - searchUiManager.getScrollRangeDelta(mInsets)); ViewGroup searchView = (ViewGroup) searchUiManager; searchView.setEnabled(false); for (int i = 0; i < searchView.getChildCount(); i++) { searchView.getChildAt(i).setEnabled(false); } measureView(mRootView, mDp.widthPx, mDp.heightPx); dispatchVisibilityAggregated(mRootView, true); Loading @@ -524,7 +525,6 @@ public class LauncherPreviewRenderer { // Additional measure for views which use auto text size API measureView(mRootView, mDp.widthPx, mDp.heightPx); } } private static void measureView(View view, int width, int height) { view.measure(makeMeasureSpec(width, EXACTLY), makeMeasureSpec(height, EXACTLY)); Loading Loading
src/com/android/launcher3/graphics/LauncherPreviewRenderer.java +244 −244 Original line number Diff line number Diff line Loading @@ -117,7 +117,8 @@ import java.util.concurrent.TimeoutException; * 4) Measure and draw the view on a canvas */ @TargetApi(Build.VERSION_CODES.O) public class LauncherPreviewRenderer { public class LauncherPreviewRenderer extends ContextThemeWrapper implements ActivityContext, WorkspaceLayoutManager, LayoutInflater.Factory2 { private static final String TAG = "LauncherPreviewRenderer"; Loading Loading @@ -211,10 +212,14 @@ public class LauncherPreviewRenderer { private final DeviceProfile mDp; private final boolean mMigrated; private final Rect mInsets; private final WorkspaceItemInfo mWorkspaceItemInfo; private final LayoutInflater mHomeElementInflater; private final InsettableFrameLayout mRootView; private final Hotseat mHotseat; private final CellLayout mWorkspace; public LauncherPreviewRenderer(Context context, InvariantDeviceProfile idp, boolean migrated) { super(context, R.style.AppTheme); mUiHandler = new Handler(Looper.getMainLooper()); mContext = context; mIdp = idp; Loading @@ -239,26 +244,6 @@ public class LauncherPreviewRenderer { mWorkspaceItemInfo.intent = new Intent(); mWorkspaceItemInfo.contentDescription = mWorkspaceItemInfo.title = context.getString(R.string.label_application); } /** Populate preview and render it. */ public View getRenderedView() { MainThreadRenderer renderer = new MainThreadRenderer(mContext); renderer.populate(); return renderer.mRootView; } private class MainThreadRenderer extends ContextThemeWrapper implements ActivityContext, WorkspaceLayoutManager, LayoutInflater.Factory2 { private final LayoutInflater mHomeElementInflater; private final InsettableFrameLayout mRootView; private final Hotseat mHotseat; private final CellLayout mWorkspace; MainThreadRenderer(Context context) { super(context, R.style.AppTheme); mHomeElementInflater = LayoutInflater.from( new ContextThemeWrapper(this, R.style.HomeScreenElementTheme)); Loading @@ -279,6 +264,20 @@ public class LauncherPreviewRenderer { mDp.workspacePadding.bottom); } /** Populate preview and render it. */ public View getRenderedView() { populate(); return mRootView; } public boolean shouldShowRealLauncherPreview() { return ENABLE_LAUNCHER_PREVIEW_IN_GRID_PICKER.get(); } public boolean shouldShowQsb() { return FeatureFlags.QSB_ON_FIRST_SCREEN; } @Override public View onCreateView(View parent, String name, Context context, AttributeSet attrs) { if ("TextClock".equals(name)) { Loading Loading @@ -343,7 +342,8 @@ public class LauncherPreviewRenderer { addInScreenFromBind(folderIcon, info); } private void inflateAndAddWidgets(LauncherAppWidgetInfo info, private void inflateAndAddWidgets( LauncherAppWidgetInfo info, Map<ComponentKey, AppWidgetProviderInfo> widgetProviderInfoMap) { if (widgetProviderInfoMap == null) { return; Loading @@ -366,8 +366,8 @@ public class LauncherPreviewRenderer { inflateAndAddWidgets(info, widgetItem.widgetInfo); } private void inflateAndAddWidgets(LauncherAppWidgetInfo info, LauncherAppWidgetProviderInfo providerInfo) { private void inflateAndAddWidgets( LauncherAppWidgetInfo info, LauncherAppWidgetProviderInfo providerInfo) { AppWidgetHostView view = new AppWidgetHostView(mContext); view.setAppWidget(-1, providerInfo); view.updateAppWidget(null); Loading Loading @@ -401,7 +401,7 @@ public class LauncherPreviewRenderer { } private void populate() { if (ENABLE_LAUNCHER_PREVIEW_IN_GRID_PICKER.get()) { if (shouldShowRealLauncherPreview()) { WorkspaceFetcher fetcher; PreviewContext previewContext = null; if (mMigrated) { Loading @@ -424,20 +424,17 @@ public class LauncherPreviewRenderer { return; } // Separate the items that are on the current screen, and all the other remaining // items // Separate the items that are on the current screen, and the other remaining items. ArrayList<ItemInfo> currentWorkspaceItems = new ArrayList<>(); ArrayList<ItemInfo> otherWorkspaceItems = new ArrayList<>(); ArrayList<LauncherAppWidgetInfo> currentAppWidgets = new ArrayList<>(); ArrayList<LauncherAppWidgetInfo> otherAppWidgets = new ArrayList<>(); filterCurrentWorkspaceItems(0 /* currentScreenId */, workspaceResult.mWorkspaceItems, currentWorkspaceItems, otherWorkspaceItems); filterCurrentWorkspaceItems(0 /* currentScreenId */, workspaceResult.mAppWidgets, currentAppWidgets, otherAppWidgets); sortWorkspaceItemsSpatially(mIdp, currentWorkspaceItems); for (ItemInfo itemInfo : currentWorkspaceItems) { switch (itemInfo.itemType) { case Favorites.ITEM_TYPE_APPLICATION: Loading @@ -445,7 +442,7 @@ public class LauncherPreviewRenderer { case Favorites.ITEM_TYPE_DEEP_SHORTCUT: inflateAndAddIcon((WorkspaceItemInfo) itemInfo); break; case LauncherSettings.Favorites.ITEM_TYPE_FOLDER: case Favorites.ITEM_TYPE_FOLDER: inflateAndAddFolder((FolderInfo) itemInfo); break; default: Loading @@ -468,7 +465,6 @@ public class LauncherPreviewRenderer { break; } } IntArray ranks = getMissingHotseatRanks(currentWorkspaceItems, mIdp.numHotseatIcons); int count = Math.min(ranks.size(), workspaceResult.mCachedPredictedItems.size()); Loading @@ -476,7 +472,7 @@ public class LauncherPreviewRenderer { AppInfo appInfo = workspaceResult.mCachedPredictedItems.get(i); int rank = ranks.get(i); WorkspaceItemInfo itemInfo = new WorkspaceItemInfo(appInfo); itemInfo.container = LauncherSettings.Favorites.CONTAINER_HOTSEAT_PREDICTION; itemInfo.container = Favorites.CONTAINER_HOTSEAT_PREDICTION; itemInfo.rank = rank; itemInfo.cellX = mHotseat.getCellXFromOrder(rank); itemInfo.cellY = mHotseat.getCellYFromOrder(rank); Loading @@ -503,7 +499,7 @@ public class LauncherPreviewRenderer { } // Add first page QSB if (FeatureFlags.QSB_ON_FIRST_SCREEN) { if (shouldShowQsb()) { View qsb = mHomeElementInflater.inflate( R.layout.search_container_workspace, mWorkspace, false); CellLayout.LayoutParams lp = Loading @@ -517,6 +513,11 @@ public class LauncherPreviewRenderer { mRootView.findViewById(R.id.search_container_all_apps); mRootView.findViewById(R.id.apps_view).setTranslationY( mDp.heightPx - searchUiManager.getScrollRangeDelta(mInsets)); ViewGroup searchView = (ViewGroup) searchUiManager; searchView.setEnabled(false); for (int i = 0; i < searchView.getChildCount(); i++) { searchView.getChildAt(i).setEnabled(false); } measureView(mRootView, mDp.widthPx, mDp.heightPx); dispatchVisibilityAggregated(mRootView, true); Loading @@ -524,7 +525,6 @@ public class LauncherPreviewRenderer { // Additional measure for views which use auto text size API measureView(mRootView, mDp.widthPx, mDp.heightPx); } } private static void measureView(View view, int width, int height) { view.measure(makeMeasureSpec(width, EXACTLY), makeMeasureSpec(height, EXACTLY)); Loading