diff options
-rw-r--r-- | res/values-ja/strings.xml | 2 | ||||
-rw-r--r-- | res/values/strings.xml | 5 | ||||
-rw-r--r-- | src/com/android/launcher2/ApplicationInfo.java | 6 | ||||
-rw-r--r-- | src/com/android/launcher2/AppsCustomizePagedView.java | 4 | ||||
-rw-r--r-- | src/com/android/launcher2/AppsCustomizeTabHost.java | 11 | ||||
-rw-r--r-- | src/com/android/launcher2/DragController.java | 4 | ||||
-rw-r--r-- | src/com/android/launcher2/Folder.java | 3 | ||||
-rw-r--r-- | src/com/android/launcher2/ItemInfo.java | 22 | ||||
-rw-r--r-- | src/com/android/launcher2/Launcher.java | 55 | ||||
-rw-r--r-- | src/com/android/launcher2/LauncherModel.java | 23 | ||||
-rw-r--r-- | src/com/android/launcher2/LauncherProvider.java | 11 | ||||
-rw-r--r-- | src/com/android/launcher2/PagedView.java | 4 | ||||
-rw-r--r-- | src/com/android/launcher2/PagedViewWithDraggableItems.java | 2 | ||||
-rw-r--r-- | src/com/android/launcher2/ShortcutInfo.java | 6 | ||||
-rw-r--r-- | src/com/android/launcher2/Workspace.java | 145 |
15 files changed, 148 insertions, 155 deletions
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index 6fa6b28b8..0fc144dea 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -20,7 +20,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="application_name" msgid="8424725141379931883">"ランチャー"</string> - <string name="home" msgid="5921706419368316758">"ホーム"</string> + <string name="home" msgid="5921706419368316758">"Home"</string> <string name="uid_name" msgid="3371120195364560632">"Android Core Apps"</string> <string name="folder_name" msgid="8551881338202938211"></string> <string name="chooser_wallpaper" msgid="6063168087625352235">"壁紙の選択"</string> diff --git a/res/values/strings.xml b/res/values/strings.xml index d9fbba253..1416d40e9 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -213,10 +213,13 @@ s --> <!-- Accessibility --> <skip /> + <!-- The format string for Workspace descriptions [CHAR_LIMIT=none] --> + <string name="workspace_description_format">Home screen %1$d</string> + <!-- The format string for default page scroll text [CHAR_LIMIT=none] --> <string name="default_scroll_format">Page %1$d of %2$d</string> <!-- The format string for Workspace page scroll text [CHAR_LIMIT=none] --> - <string name="workspace_scroll_format">Workspace %1$d of %2$d</string> + <string name="workspace_scroll_format">Home screen %1$d of %2$d</string> <!-- The format string for AppsCustomize Apps page scroll text [CHAR_LIMIT=none] --> <string name="apps_customize_apps_scroll_format">Apps page %1$d of %2$d</string> <!-- The format string for AppsCustomize Apps page scroll text [CHAR_LIMIT=none] --> diff --git a/src/com/android/launcher2/ApplicationInfo.java b/src/com/android/launcher2/ApplicationInfo.java index 1fc1d1f55..281d59c68 100644 --- a/src/com/android/launcher2/ApplicationInfo.java +++ b/src/com/android/launcher2/ApplicationInfo.java @@ -102,6 +102,12 @@ class ApplicationInfo extends ItemInfo { firstInstallTime = info.firstInstallTime; } + /** Returns the package name that the shortcut's intent will resolve to, or an empty string if + * none exists. */ + String getPackageName() { + return super.getPackageName(intent); + } + /** * Creates the application intent based on a component name and various launch flags. * Sets {@link #itemType} to {@link LauncherSettings.BaseLauncherColumns#ITEM_TYPE_APPLICATION}. diff --git a/src/com/android/launcher2/AppsCustomizePagedView.java b/src/com/android/launcher2/AppsCustomizePagedView.java index fe9334b81..5bd0ac655 100644 --- a/src/com/android/launcher2/AppsCustomizePagedView.java +++ b/src/com/android/launcher2/AppsCustomizePagedView.java @@ -524,10 +524,6 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen mPressedIcon.lockDrawableState(); } - // NOTE: we need to re-enable the wallpaper visibility if we want correct transitions - // between items that are launched from the workspace and all apps. It will be disabled - // correctly the next time the window is visible in AppsCustomizeTabHost. - mLauncher.updateWallpaperVisibility(true); mLauncher.startActivitySafely(v, appInfo.intent, appInfo); } else if (v instanceof PagedViewWidget) { diff --git a/src/com/android/launcher2/AppsCustomizeTabHost.java b/src/com/android/launcher2/AppsCustomizeTabHost.java index 7a2c247c6..d3afc3bf0 100644 --- a/src/com/android/launcher2/AppsCustomizeTabHost.java +++ b/src/com/android/launcher2/AppsCustomizeTabHost.java @@ -471,17 +471,6 @@ public class AppsCustomizeTabHost extends TabHost implements LauncherTransitiona // Load the current page synchronously, and the neighboring pages asynchronously mAppsCustomizePane.loadAssociatedPages(mAppsCustomizePane.getCurrentPage(), true); mAppsCustomizePane.loadAssociatedPages(mAppsCustomizePane.getCurrentPage()); - - // We had to enable the wallpaper visibility when launching apps from all apps (so that - // the transitions would be the same as when launching from workspace) so we need to - // re-disable the wallpaper visibility to ensure performance. - int duration = getResources().getInteger(android.R.integer.config_shortAnimTime); - postDelayed(new Runnable() { - @Override - public void run() { - mLauncher.updateWallpaperVisibility(false); - } - }, duration); } } diff --git a/src/com/android/launcher2/DragController.java b/src/com/android/launcher2/DragController.java index b9d7dd4f9..b4b20c69f 100644 --- a/src/com/android/launcher2/DragController.java +++ b/src/com/android/launcher2/DragController.java @@ -381,8 +381,8 @@ public class DragController { if (dragInfo != null && dragInfo.intent != null && info.intent != null) { - boolean isSamePackage = dragInfo.intent.getPackage().equals( - info.intent.getPackage()); + boolean isSamePackage = dragInfo.getPackageName().equals( + info.getPackageName()); if (isSamePackage) { cancelDrag(); return; diff --git a/src/com/android/launcher2/Folder.java b/src/com/android/launcher2/Folder.java index 0389264a5..f63e9bc3e 100644 --- a/src/com/android/launcher2/Folder.java +++ b/src/com/android/launcher2/Folder.java @@ -200,6 +200,9 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList } public boolean onLongClick(View v) { + // Return if global dragging is not enabled + if (!mLauncher.isDraggingEnabled()) return true; + Object tag = v.getTag(); if (tag instanceof ShortcutInfo) { ShortcutInfo item = (ShortcutInfo) tag; diff --git a/src/com/android/launcher2/ItemInfo.java b/src/com/android/launcher2/ItemInfo.java index 11a6c0d00..d34b87e39 100644 --- a/src/com/android/launcher2/ItemInfo.java +++ b/src/com/android/launcher2/ItemInfo.java @@ -16,13 +16,14 @@ package com.android.launcher2; -import java.io.ByteArrayOutputStream; -import java.io.IOException; - import android.content.ContentValues; +import android.content.Intent; import android.graphics.Bitmap; import android.util.Log; +import java.io.ByteArrayOutputStream; +import java.io.IOException; + /** * Represents an item in the launcher. */ @@ -109,6 +110,21 @@ class ItemInfo { container = info.container; } + /** Returns the package name that the intent will resolve to, or an empty string if + * none exists. */ + static String getPackageName(Intent intent) { + if (intent != null) { + String packageName = intent.getPackage(); + if (packageName == null) { + packageName = intent.getComponent().getPackageName(); + } + if (packageName != null) { + return packageName; + } + } + return ""; + } + /** * Write the fields of this item to the DB * diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java index 0d4b0d041..d0f4b86fb 100644 --- a/src/com/android/launcher2/Launcher.java +++ b/src/com/android/launcher2/Launcher.java @@ -33,8 +33,6 @@ import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProviderInfo; import android.content.ActivityNotFoundException; import android.content.BroadcastReceiver; -import android.content.ClipData; -import android.content.ClipDescription; import android.content.ComponentCallbacks2; import android.content.ComponentName; import android.content.ContentResolver; @@ -144,6 +142,10 @@ public final class Launcher extends Activity private static final String PREFERENCES = "launcher.preferences"; static final String FORCE_ENABLE_ROTATION_PROPERTY = "launcher.force_enable_rotation"; + // The Intent extra that defines whether to ignore the launch animation + static final String INTENT_EXTRA_IGNORE_LAUNCH_ANIMATION = + "com.android.launcher.intent.extra.shortcut.INGORE_LAUNCH_ANIMATION"; + // Type: int private static final String RUNTIME_STATE_CURRENT_SCREEN = "launcher.current_screen"; // Type: int @@ -494,6 +496,12 @@ public final class Launcher extends Activity return mDragLayer; } + boolean isDraggingEnabled() { + // We prevent dragging when we are loading the workspace as it is possible to pick up a view + // that is subsequently removed from the workspace in startBinding(). + return !mModel.isLoadingWorkspace(); + } + static int getScreen() { synchronized (sLock) { return sScreen; @@ -663,6 +671,11 @@ public final class Launcher extends Activity @Override protected void onPause() { + // NOTE: We want all transitions from launcher to act as if the wallpaper were enabled + // to be consistent. So re-enable the flag here, and we will re-disable it as necessary + // when Launcher resumes and we are still in AllApps. + updateWallpaperVisibility(true); + super.onPause(); mPaused = true; mDragController.cancelDrag(); @@ -1180,6 +1193,23 @@ public final class Launcher extends Activity // currently shown, because doing that may involve // some communication back with the app. mWorkspace.postDelayed(mBuildLayersRunnable, 500); + + // We had to enable the wallpaper visibility when launching apps from all + // apps (so that the transitions would be the same as when launching from + // workspace) so take this time to see if we need to re-disable the + // wallpaper visibility to ensure performance. + mWorkspace.post(new Runnable() { + @Override + public void run() { + if (mState == State.APPS_CUSTOMIZE) { + if (mAppsCustomizeTabHost != null && + !mAppsCustomizeTabHost.isTransitioning()) { + updateWallpaperVisibility(false); + } + } + } + }); + observer.removeOnPreDrawListener(this); return true; } @@ -1890,7 +1920,11 @@ public final class Launcher extends Activity intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); try { - if (v != null) { + // Only launch using the new animation if the shortcut has not opted out (this is a + // private contract between launcher and may be ignored in the future). + boolean useLaunchAnimation = (v != null) && + !intent.hasExtra(INTENT_EXTRA_IGNORE_LAUNCH_ANIMATION); + if (useLaunchAnimation) { ActivityOptions opts = ActivityOptions.makeScaleUpAnimation(v, 0, 0, v.getMeasuredWidth(), v.getMeasuredHeight()); @@ -2054,14 +2088,9 @@ public final class Launcher extends Activity } public boolean onLongClick(View v) { - - if (mState != State.WORKSPACE) { - return false; - } - - if (isWorkspaceLocked()) { - return false; - } + if (!isDraggingEnabled()) return false; + if (isWorkspaceLocked()) return false; + if (mState != State.WORKSPACE) return false; if (!(v instanceof CellLayout)) { v = (View) v.getParent().getParent(); @@ -2808,7 +2837,9 @@ public final class Launcher extends Activity if (voiceButtonContainer != null) voiceButtonContainer.setVisibility(View.GONE); searchButton.setVisibility(View.GONE); voiceButton.setVisibility(View.GONE); - voiceButtonProxy.setVisibility(View.GONE); + if (voiceButtonProxy != null) { + voiceButtonProxy.setVisibility(View.GONE); + } return false; } } diff --git a/src/com/android/launcher2/LauncherModel.java b/src/com/android/launcher2/LauncherModel.java index ff4abc6b3..bc88a987d 100644 --- a/src/com/android/launcher2/LauncherModel.java +++ b/src/com/android/launcher2/LauncherModel.java @@ -745,6 +745,15 @@ public class LauncherModel extends BroadcastReceiver { return mAllAppsLoaded; } + boolean isLoadingWorkspace() { + synchronized (mLock) { + if (mLoaderTask != null) { + return mLoaderTask.isLoadingWorkspace(); + } + } + return false; + } + /** * Runnable for the thread that loads the contents of the launcher: * - workspace icons @@ -755,6 +764,7 @@ public class LauncherModel extends BroadcastReceiver { private Context mContext; private Thread mWaitThread; private boolean mIsLaunching; + private boolean mIsLoadingAndBindingWorkspace; private boolean mStopped; private boolean mLoadAndBindStepFinished; private HashMap<Object, CharSequence> mLabelCache; @@ -769,7 +779,13 @@ public class LauncherModel extends BroadcastReceiver { return mIsLaunching; } + boolean isLoadingWorkspace() { + return mIsLoadingAndBindingWorkspace; + } + private void loadAndBindWorkspace() { + mIsLoadingAndBindingWorkspace = true; + // Load the workspace if (DEBUG_LOADERS) { Log.d(TAG, "loadAndBindWorkspace mWorkspaceLoaded=" + mWorkspaceLoaded); @@ -1374,13 +1390,16 @@ public class LauncherModel extends BroadcastReceiver { } } }); - // If we're profiling, this is the last thing in the queue. + // Cleanup mHandler.post(new Runnable() { public void run() { + // If we're profiling, ensure this is the last thing in the queue. if (DEBUG_LOADERS) { Log.d(TAG, "bound workspace in " + (SystemClock.uptimeMillis()-t) + "ms"); } + + mIsLoadingAndBindingWorkspace = false; } }); } @@ -1684,7 +1703,7 @@ public class LauncherModel extends BroadcastReceiver { for (ItemInfo i : sWorkspaceItems) { if (i instanceof ShortcutInfo) { ShortcutInfo info = (ShortcutInfo) i; - if (info.intent.getPackage().equals(packageName)) { + if (packageName.equals(info.getPackageName())) { infos.add(info); } } diff --git a/src/com/android/launcher2/LauncherProvider.java b/src/com/android/launcher2/LauncherProvider.java index 5e572a575..4cf87d2b4 100644 --- a/src/com/android/launcher2/LauncherProvider.java +++ b/src/com/android/launcher2/LauncherProvider.java @@ -66,7 +66,7 @@ public class LauncherProvider extends ContentProvider { private static final String DATABASE_NAME = "launcher.db"; - private static final int DATABASE_VERSION = 10; + private static final int DATABASE_VERSION = 11; static final String AUTHORITY = "com.android.launcher2.settings"; @@ -477,12 +477,14 @@ public class LauncherProvider extends ContentProvider { version = 9; } - if (version < 10) { + // We bumped the version twice during JB, once to update the launch flags, and once to + // update the override for the default launch animation. + if (version < 11) { // Contact shortcuts need a different set of flags to be launched now // The updateContactsShortcuts change is idempotent, so we can keep using it like // back in the Donut days updateContactsShortcuts(db); - version = 10; + version = 11; } if (version != DATABASE_VERSION) { @@ -535,7 +537,8 @@ public class LauncherProvider extends ContentProvider { // detail activities. newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); - + newIntent.putExtra( + Launcher.INTENT_EXTRA_IGNORE_LAUNCH_ANIMATION, true); newIntent.setData(uri); final ContentValues values = new ContentValues(); diff --git a/src/com/android/launcher2/PagedView.java b/src/com/android/launcher2/PagedView.java index adfe0de81..b850ce275 100644 --- a/src/com/android/launcher2/PagedView.java +++ b/src/com/android/launcher2/PagedView.java @@ -627,7 +627,9 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc if (isScrollingIndicatorEnabled()) { updateScrollingIndicator(); } - if (mFadeInAdjacentScreens) { + boolean isInOverscroll = mOverScrollX < 0 || mOverScrollX > mMaxScrollX; + + if (mFadeInAdjacentScreens && !isInOverscroll) { for (int i = 0; i < getChildCount(); i++) { View child = getChildAt(i); if (child != null) { diff --git a/src/com/android/launcher2/PagedViewWithDraggableItems.java b/src/com/android/launcher2/PagedViewWithDraggableItems.java index a0479707e..22fd82b69 100644 --- a/src/com/android/launcher2/PagedViewWithDraggableItems.java +++ b/src/com/android/launcher2/PagedViewWithDraggableItems.java @@ -107,6 +107,8 @@ public abstract class PagedViewWithDraggableItems extends PagedView // When we have exited all apps or are in transition, disregard long clicks if (!mLauncher.isAllAppsCustomizeOpen() || mLauncher.getWorkspace().isSwitchingState()) return false; + // Return if global dragging is not enabled + if (!mLauncher.isDraggingEnabled()) return false; return beginDragging(v); } diff --git a/src/com/android/launcher2/ShortcutInfo.java b/src/com/android/launcher2/ShortcutInfo.java index 76892dbde..533059f57 100644 --- a/src/com/android/launcher2/ShortcutInfo.java +++ b/src/com/android/launcher2/ShortcutInfo.java @@ -98,6 +98,12 @@ class ShortcutInfo extends ItemInfo { return mIcon; } + /** Returns the package name that the shortcut's intent will resolve to, or an empty string if + * none exists. */ + String getPackageName() { + return super.getPackageName(intent); + } + public void updateIcon(IconCache iconCache) { mIcon = iconCache.getIcon(intent); usingFallbackIcon = iconCache.isDefaultIcon(mIcon); diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java index e946095f7..f0d339557 100644 --- a/src/com/android/launcher2/Workspace.java +++ b/src/com/android/launcher2/Workspace.java @@ -182,6 +182,7 @@ public class Workspace extends SmoothPagedView private float mOverscrollFade = 0; private boolean mOverscrollTransformsSet; public static final int DRAG_BITMAP_PADDING = 2; + private boolean mWorkspaceFadeInAdjacentScreens; // Camera and Matrix used to determine the final position of a neighboring CellLayout private final Matrix mMatrix = new Matrix(); @@ -247,7 +248,6 @@ public class Workspace extends SmoothPagedView private float[] mOldScaleXs; private float[] mOldScaleYs; private float[] mOldBackgroundAlphas; - private float[] mOldBackgroundAlphaMultipliers; private float[] mOldAlphas; private float[] mOldRotationYs; private float[] mNewTranslationXs; @@ -255,7 +255,6 @@ public class Workspace extends SmoothPagedView private float[] mNewScaleXs; private float[] mNewScaleYs; private float[] mNewBackgroundAlphas; - private float[] mNewBackgroundAlphaMultipliers; private float[] mNewAlphas; private float[] mNewRotationYs; private float mTransitionProgress; @@ -286,7 +285,8 @@ public class Workspace extends SmoothPagedView setDataIsReady(); final Resources res = getResources(); - mFadeInAdjacentScreens = res.getBoolean(R.bool.config_workspaceFadeAdjacentScreens); + mWorkspaceFadeInAdjacentScreens = res.getBoolean(R.bool.config_workspaceFadeAdjacentScreens); + mFadeInAdjacentScreens = false; mWallpaperManager = WallpaperManager.getInstance(context); int cellCountX = DEFAULT_CELL_COUNT_X; @@ -442,6 +442,8 @@ public class Workspace extends SmoothPagedView cl.setOnInterceptTouchListener(this); cl.setClickable(true); cl.enableHardwareLayers(); + cl.setContentDescription(getContext().getString( + R.string.workspace_description_format, getChildCount())); } @Override @@ -721,7 +723,7 @@ public class Workspace extends SmoothPagedView // If we are not fading in adjacent screens, we still need to restore the alpha in case the // user scrolls while we are transitioning (should not affect dispatchDraw optimizations) - if (!mFadeInAdjacentScreens) { + if (!mWorkspaceFadeInAdjacentScreens) { for (int i = 0; i < getChildCount(); ++i) { ((CellLayout) getPageAt(i)).setShortcutAndWidgetAlpha(1f); } @@ -1192,55 +1194,26 @@ public class Workspace extends SmoothPagedView return Math.min(r / threshold, 1.0f); } - private void screenScrolledLargeUI(int screenCenter) { - if (isSwitchingState()) return; - boolean isInOverscroll = false; - for (int i = 0; i < getChildCount(); i++) { - CellLayout cl = (CellLayout) getChildAt(i); - if (cl != null) { - float scrollProgress = getScrollProgress(screenCenter, cl, i); - float rotation = WORKSPACE_ROTATION * scrollProgress; - float translationX = getOffsetXForRotation(rotation, cl.getWidth(), cl.getHeight()); - - // If the current page (i) is being over scrolled, we use a different - // set of rules for setting the background alpha multiplier. - if (!isSmall()) { - if ((mOverScrollX < 0 && i == 0) || (mOverScrollX > mMaxScrollX && - i == getChildCount() -1)) { - isInOverscroll = true; - rotation *= -1; - cl.setBackgroundAlphaMultiplier( - overScrollBackgroundAlphaInterpolator(Math.abs(scrollProgress))); - mOverScrollPageIndex = i; - cl.setOverScrollAmount(Math.abs(scrollProgress), i == 0); - if (!mOverscrollTransformsSet) { - mOverscrollTransformsSet = true; - cl.setPivotX(cl.getMeasuredWidth() * (i == 0 ? 0.75f : 0.25f)); - cl.setPivotY(cl.getMeasuredHeight() * 0.5f); - cl.setOverscrollTransformsDirty(true); - } - } else if (mOverScrollPageIndex != i) { - cl.setBackgroundAlphaMultiplier( - backgroundAlphaInterpolator(Math.abs(scrollProgress))); - } - } - cl.setTranslationX(translationX); - cl.setRotationY(rotation); - if (mFadeInAdjacentScreens && !isSmall()) { + @Override + protected void screenScrolled(int screenCenter) { + super.screenScrolled(screenCenter); + + boolean isInOverscroll = mOverScrollX < 0 || mOverScrollX > mMaxScrollX; + if (mWorkspaceFadeInAdjacentScreens && + mState == State.NORMAL && + !mIsSwitchingState && + !isInOverscroll) { + for (int i = 0; i < getChildCount(); i++) { + CellLayout child = (CellLayout) getChildAt(i); + if (child != null) { + float scrollProgress = getScrollProgress(screenCenter, child, i); float alpha = 1 - Math.abs(scrollProgress); - cl.setShortcutAndWidgetAlpha(alpha); + child.getShortcutsAndWidgets().setAlpha(alpha); } } + invalidate(); } - if (mOverscrollTransformsSet && !isInOverscroll) { - mOverscrollTransformsSet = false; - ((CellLayout) getChildAt(0)).resetOverscrollTransforms(); - ((CellLayout) getChildAt(getChildCount() - 1)).resetOverscrollTransforms(); - } - invalidate(); - } - private void screenScrolledStandardUI(int screenCenter) { if (mOverScrollX < 0 || mOverScrollX > mMaxScrollX) { int index = mOverScrollX < 0 ? 0 : getChildCount() - 1; CellLayout cl = (CellLayout) getChildAt(index); @@ -1269,24 +1242,8 @@ public class Workspace extends SmoothPagedView } @Override - protected void screenScrolled(int screenCenter) { - if (LauncherApplication.isScreenLarge()) { - // We don't call super.screenScrolled() here because we handle the adjacent pages alpha - // ourselves (for efficiency), and there are no scrolling indicators to update. - screenScrolledLargeUI(screenCenter); - } else { - super.screenScrolled(screenCenter); - screenScrolledStandardUI(screenCenter); - } - } - - @Override protected void overScroll(float amount) { - if (LauncherApplication.isScreenLarge()) { - dampedOverScroll(amount); - } else { - acceleratedOverScroll(amount); - } + acceleratedOverScroll(amount); } protected void onAttachedToWindow() { @@ -1519,7 +1476,6 @@ public class Workspace extends SmoothPagedView mOldScaleXs = new float[childCount]; mOldScaleYs = new float[childCount]; mOldBackgroundAlphas = new float[childCount]; - mOldBackgroundAlphaMultipliers = new float[childCount]; mOldAlphas = new float[childCount]; mOldRotationYs = new float[childCount]; mNewTranslationXs = new float[childCount]; @@ -1527,7 +1483,6 @@ public class Workspace extends SmoothPagedView mNewScaleXs = new float[childCount]; mNewScaleYs = new float[childCount]; mNewBackgroundAlphas = new float[childCount]; - mNewBackgroundAlphaMultipliers = new float[childCount]; mNewAlphas = new float[childCount]; mNewRotationYs = new float[childCount]; } @@ -1582,11 +1537,10 @@ public class Workspace extends SmoothPagedView getResources().getInteger(R.integer.config_appsCustomizeWorkspaceShrinkTime); for (int i = 0; i < getChildCount(); i++) { final CellLayout cl = (CellLayout) getChildAt(i); - float rotation = 0f; - float initialAlpha = cl.getAlpha(); - float finalAlphaMultiplierValue = 1f; - float finalAlpha = (!mFadeInAdjacentScreens || stateIsSpringLoaded || + float finalAlpha = (!mWorkspaceFadeInAdjacentScreens || stateIsSpringLoaded || (i == mCurrentPage)) ? 1f : 0f; + float currentAlpha = cl.getShortcutsAndWidgets().getAlpha(); + float initialAlpha = currentAlpha; // Determine the pages alpha during the state transition if ((oldStateIsSmall && stateIsNormal) || @@ -1596,29 +1550,12 @@ public class Workspace extends SmoothPagedView // or, if we're in spring-loaded mode if (i == mCurrentPage || !animated || oldStateIsSpringLoaded) { finalAlpha = 1f; - finalAlphaMultiplierValue = 0f; } else { initialAlpha = 0f; finalAlpha = 0f; } } - // Update the rotation of the screen (don't apply rotation on Phone UI) - if (LauncherApplication.isScreenLarge()) { - if (i < mCurrentPage) { - rotation = WORKSPACE_ROTATION; - } else if (i > mCurrentPage) { - rotation = -WORKSPACE_ROTATION; - } - } - - // If the screen is not xlarge, then don't rotate the CellLayouts - // NOTE: If we don't update the side pages alpha, then we should not hide the side - // pages. see unshrink(). - if (LauncherApplication.isScreenLarge()) { - translationX = getOffsetXForRotation(rotation, cl.getWidth(), cl.getHeight()); - } - mOldAlphas[i] = initialAlpha; mNewAlphas[i] = finalAlpha; if (animated) { @@ -1627,25 +1564,19 @@ public class Workspace extends SmoothPagedView mOldScaleXs[i] = cl.getScaleX(); mOldScaleYs[i] = cl.getScaleY(); mOldBackgroundAlphas[i] = cl.getBackgroundAlpha(); - mOldBackgroundAlphaMultipliers[i] = cl.getBackgroundAlphaMultiplier(); - mOldRotationYs[i] = cl.getRotationY(); mNewTranslationXs[i] = translationX; mNewTranslationYs[i] = translationY; mNewScaleXs[i] = finalScaleFactor; mNewScaleYs[i] = finalScaleFactor; mNewBackgroundAlphas[i] = finalBackgroundAlpha; - mNewBackgroundAlphaMultipliers[i] = finalAlphaMultiplierValue; - mNewRotationYs[i] = rotation; } else { cl.setTranslationX(translationX); cl.setTranslationY(translationY); cl.setScaleX(finalScaleFactor); cl.setScaleY(finalScaleFactor); cl.setBackgroundAlpha(finalBackgroundAlpha); - cl.setBackgroundAlphaMultiplier(finalAlphaMultiplierValue); cl.setShortcutAndWidgetAlpha(finalAlpha); - cl.setRotationY(rotation); } } @@ -1653,13 +1584,13 @@ public class Workspace extends SmoothPagedView for (int index = 0; index < getChildCount(); index++) { final int i = index; final CellLayout cl = (CellLayout) getChildAt(i); + float currentAlpha = cl.getShortcutsAndWidgets().getAlpha(); if (mOldAlphas[i] == 0 && mNewAlphas[i] == 0) { cl.setTranslationX(mNewTranslationXs[i]); cl.setTranslationY(mNewTranslationYs[i]); cl.setScaleX(mNewScaleXs[i]); cl.setScaleY(mNewScaleYs[i]); cl.setBackgroundAlpha(mNewBackgroundAlphas[i]); - cl.setBackgroundAlphaMultiplier(mNewBackgroundAlphaMultipliers[i]); cl.setShortcutAndWidgetAlpha(mNewAlphas[i]); cl.setRotationY(mNewRotationYs[i]); } else { @@ -1672,7 +1603,7 @@ public class Workspace extends SmoothPagedView .setInterpolator(mZoomInInterpolator); anim.play(a); - if (mOldAlphas[i] != mNewAlphas[i]) { + if (mOldAlphas[i] != mNewAlphas[i] || currentAlpha != mNewAlphas[i]) { LauncherViewPropertyAnimator alphaAnim = new LauncherViewPropertyAnimator(cl.getShortcutsAndWidgets()); alphaAnim.alpha(mNewAlphas[i]) @@ -1680,20 +1611,8 @@ public class Workspace extends SmoothPagedView .setInterpolator(mZoomInInterpolator); anim.play(alphaAnim); } - if (mOldRotationYs[i] != 0 || mNewRotationYs[i] != 0) { - ValueAnimator rotate = ValueAnimator.ofFloat(0f, 1f).setDuration(duration); - rotate.setInterpolator(new DecelerateInterpolator(2.0f)); - rotate.addUpdateListener(new LauncherAnimatorUpdateListener() { - public void onAnimationUpdate(float a, float b) { - cl.setRotationY(a * mOldRotationYs[i] + b * mNewRotationYs[i]); - } - }); - anim.play(rotate); - } if (mOldBackgroundAlphas[i] != 0 || - mNewBackgroundAlphas[i] != 0 || - mOldBackgroundAlphaMultipliers[i] != 0 || - mNewBackgroundAlphaMultipliers[i] != 0) { + mNewBackgroundAlphas[i] != 0) { ValueAnimator bgAnim = ValueAnimator.ofFloat(0f, 1f).setDuration(duration); bgAnim.setInterpolator(mZoomInInterpolator); bgAnim.addUpdateListener(new LauncherAnimatorUpdateListener() { @@ -1701,9 +1620,6 @@ public class Workspace extends SmoothPagedView cl.setBackgroundAlpha( a * mOldBackgroundAlphas[i] + b * mNewBackgroundAlphas[i]); - cl.setBackgroundAlphaMultiplier( - a * mOldBackgroundAlphaMultipliers[i] + - b * mNewBackgroundAlphaMultipliers[i]); } }); anim.play(bgAnim); @@ -1751,7 +1667,7 @@ public class Workspace extends SmoothPagedView // ensure that only the current page is visible during (and subsequently, after) the // transition animation. If fade adjacent pages is disabled, then re-enable the page // visibility after the transition animation. - if (!mFadeInAdjacentScreens) { + if (!mWorkspaceFadeInAdjacentScreens) { for (int i = 0; i < getChildCount(); i++) { final CellLayout cl = (CellLayout) getChildAt(i); cl.setShortcutAndWidgetAlpha(1f); @@ -3708,7 +3624,8 @@ public class Workspace extends SmoothPagedView for (String intentStr : newApps) { try { Intent intent = Intent.parseUri(intentStr, 0); - if (packageNames.contains(intent.getPackage())) { + String pn = ItemInfo.getPackageName(intent); + if (packageNames.contains(pn)) { newApps.remove(intentStr); } } catch (URISyntaxException e) {} |