diff options
author | Nebojsa Cvetkovic <nebkat@gmail.com> | 2014-01-19 12:05:57 +0000 |
---|---|---|
committer | Danesh M <daneshm90@gmail.com> | 2014-01-24 16:25:20 -0800 |
commit | 4428b065d9d674a84b066015ab873f8849f2a922 (patch) | |
tree | 548870602e578b13a07c9d1f696a2acbdaaa8008 /src/com | |
parent | 912a62bc58b967e097aa35b13c092a48401a810f (diff) | |
download | android_packages_apps_Trebuchet-4428b065d9d674a84b066015ab873f8849f2a922.tar.gz android_packages_apps_Trebuchet-4428b065d9d674a84b066015ab873f8849f2a922.tar.bz2 android_packages_apps_Trebuchet-4428b065d9d674a84b066015ab873f8849f2a922.zip |
Workspace/AppsCustomizePagedView: Improved transition effect dialog
Change-Id: I7c611ee9702c3a5b945644721948c4724f7639a7
Diffstat (limited to 'src/com')
-rw-r--r-- | src/com/android/launcher3/AppsCustomizePagedView.java | 30 | ||||
-rw-r--r-- | src/com/android/launcher3/Launcher.java | 163 | ||||
-rw-r--r-- | src/com/android/launcher3/PagedView.java | 4 | ||||
-rw-r--r-- | src/com/android/launcher3/WallpaperPickerActivity.java | 2 | ||||
-rw-r--r-- | src/com/android/launcher3/Workspace.java | 29 | ||||
-rw-r--r-- | src/com/android/launcher3/settings/SettingsProvider.java | 2 |
6 files changed, 167 insertions, 63 deletions
diff --git a/src/com/android/launcher3/AppsCustomizePagedView.java b/src/com/android/launcher3/AppsCustomizePagedView.java index 44f50b200..28bc4e477 100644 --- a/src/com/android/launcher3/AppsCustomizePagedView.java +++ b/src/com/android/launcher3/AppsCustomizePagedView.java @@ -210,6 +210,7 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen enum State { NORMAL, OVERVIEW}; private State mState = State.NORMAL; private boolean mIsSwitchingState = false; + private boolean mAppsCustomizeFadeInAdjacentScreens; // Animation values private float mNewScale; @@ -297,7 +298,8 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen // The padding on the non-matched dimension for the default widget preview icons // (top + bottom) - mFadeInAdjacentScreens = false; + mAppsCustomizeFadeInAdjacentScreens = SettingsProvider.getBoolean(context, SettingsProvider.SETTINGS_UI_DRAWER_SCROLLING_FADE_ADJACENT, + R.bool.preferences_interface_drawer_scrolling_fade_adjacent_default); TransitionEffect.setFromString(this, SettingsProvider.getString(context, SettingsProvider.SETTINGS_UI_DRAWER_SCROLLING_TRANSITION_EFFECT, @@ -1437,14 +1439,21 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen return getChildCount() - index - 1; } - // In apps customize, we have a scrolling effect which emulates pulling cards off of a stack. + @Override + public void setFadeInAdjacentScreens(boolean fade) { + mAppsCustomizeFadeInAdjacentScreens = fade; + } + @Override protected void screenScrolled(int screenCenter) { final boolean isRtl = isLayoutRtl(); mUseTransitionEffect = !isInOverviewMode() && !mIsSwitchingState; + updatePageAlphaValues(screenCenter); + super.screenScrolled(screenCenter); + enableHwLayersOnVisiblePages(); boolean isInOverscroll = mOverScrollX < 0 || mOverScrollX > mMaxScrollX; @@ -1530,6 +1539,23 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen acceleratedOverScroll(amount); } + private void updatePageAlphaValues(int screenCenter) { + boolean isInOverscroll = mOverScrollX < 0 || mOverScrollX > mMaxScrollX; + if (mAppsCustomizeFadeInAdjacentScreens && + mState == State.NORMAL && + !mIsSwitchingState && + !isInOverscroll) { + for (int i = 0; i < getChildCount(); i++) { + View child = getPageAt(i); + if (child != null) { + float scrollProgress = getScrollProgress(screenCenter, child, i); + float alpha = 1 - Math.abs(scrollProgress); + setChildAlpha(child, alpha); + } + } + } + } + public boolean isInOverviewMode() { return mState == State.OVERVIEW; } diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index d0df9c371..0084b7182 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -50,7 +50,9 @@ import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.Configuration; import android.content.res.Resources; +import android.content.res.TypedArray; import android.database.ContentObserver; +import android.database.DataSetObserver; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Point; @@ -95,9 +97,14 @@ import android.view.animation.AccelerateDecelerateInterpolator; import android.view.animation.DecelerateInterpolator; import android.view.inputmethod.InputMethodManager; +import android.widget.AbsListView; +import android.widget.AdapterView; import android.widget.Advanceable; +import android.widget.ArrayAdapter; import android.widget.FrameLayout; +import android.widget.GridView; import android.widget.ImageView; +import android.widget.ListAdapter; import android.widget.PopupMenu; import android.widget.TextView; import android.widget.Toast; @@ -116,6 +123,7 @@ import java.io.IOException; import java.io.PrintWriter; import java.text.DateFormat; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Date; import java.util.HashMap; @@ -1003,17 +1011,9 @@ public class Launcher extends Activity final Menu menu = popupMenu.getMenu(); popupMenu.inflate(R.menu.apps_customize_sort_mode); AppsCustomizePagedView.SortMode sortMode = mAppsCustomizeContent.getSortMode(); - switch (sortMode) { - case Title: - menu.findItem(R.id.sort_mode_title).setChecked(true); - break; - case LaunchCount: - menu.findItem(R.id.sort_mode_launch_count).setChecked(true); - break; - case InstallTime: - menu.findItem(R.id.sort_mode_install_time).setChecked(true); - break; - } + menu.findItem(R.id.sort_mode_title).setChecked(sortMode == AppsCustomizePagedView.SortMode.Title); + menu.findItem(R.id.sort_mode_launch_count).setChecked(sortMode == AppsCustomizePagedView.SortMode.LaunchCount); + menu.findItem(R.id.sort_mode_install_time).setChecked(sortMode == AppsCustomizePagedView.SortMode.InstallTime); popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { @@ -1035,20 +1035,14 @@ public class Launcher extends Activity public void onClickTransitionEffectButton(View v) { AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setTitle(R.string.transition_effect_button_text); - - if (isAllAppsVisible()) { - mAppsCustomizeContent.exitOverviewMode(true); - } else { - mWorkspace.exitOverviewMode(true); - } + // Load values final PagedView pagedView = isAllAppsVisible() ? mAppsCustomizeContent : mWorkspace; final PagedView.TransitionEffect oldEffect = pagedView.getTransitionEffect(); final String oldEffectName = oldEffect != null ? oldEffect.getName() : PagedView.TransitionEffect.TRANSITION_EFFECT_NONE; - final String[] entries = getResources().getStringArray(R.array.transition_effect_entries); + final String[] titles = getResources().getStringArray(R.array.transition_effect_entries); final String[] values = getResources().getStringArray(R.array.transition_effect_values); int selected = -1; @@ -1059,50 +1053,53 @@ public class Launcher extends Activity } } - builder.setSingleChoiceItems(entries, selected, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - String effect = values[which]; - PagedView.TransitionEffect.setFromString(pagedView, effect); + // Create title view with overflow menu + View customTitle = getLayoutInflater().inflate(R.layout.dialog_title_overflow_menu, null); + TextView title = (TextView) customTitle.findViewById(android.R.id.title); + title.setText(R.string.transition_effect_button_text); - final int currentPage = pagedView.getNextPage(); - final int nextPage = currentPage + (currentPage != pagedView.getPageCount() - 1 ? 1 : -1); + View overflowMenu = customTitle.findViewById(R.id.overflow_menu_button); + overflowMenu.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + onClickTransitionEffectOverflowMenuButton(v); + } + }); + builder.setCustomTitle(customTitle); - pagedView.snapToPageImmediately(currentPage); - pagedView.snapToPage(nextPage, new Runnable() { - @Override - public void run() { - pagedView.snapToPage(currentPage); - } - }); + builder.setSingleChoiceItems(titles, selected, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + String effect = values[which]; + PagedView.TransitionEffect.setFromString(pagedView, effect); + + // Show the changes immediately + final int currentPage = pagedView.getNextPage(); + final int nextPage = currentPage + (currentPage != pagedView.getPageCount() - 1 ? 1 : -1); + pagedView.snapToPageImmediately(currentPage); + pagedView.snapToPage(nextPage, new Runnable() { + @Override + public void run() { + pagedView.snapToPage(currentPage); } - }) - .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - PagedView.TransitionEffect effect = pagedView.getTransitionEffect(); - String name = effect != null ? effect.getName() : PagedView.TransitionEffect.TRANSITION_EFFECT_NONE; + }); - SettingsProvider.get(Launcher.this).edit() - .putString(!isAllAppsVisible() ? - SettingsProvider.SETTINGS_UI_HOMESCREEN_SCROLLING_TRANSITION_EFFECT : - SettingsProvider.SETTINGS_UI_DRAWER_SCROLLING_TRANSITION_EFFECT, name) - .commit(); + SettingsProvider.get(Launcher.this).edit() + .putString(!isAllAppsVisible() ? + SettingsProvider.SETTINGS_UI_HOMESCREEN_SCROLLING_TRANSITION_EFFECT : + SettingsProvider.SETTINGS_UI_DRAWER_SCROLLING_TRANSITION_EFFECT, effect) + .commit(); + } + }); - dialog.dismiss(); - } - }) - .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - dialog.cancel(); - } - }) - .setOnCancelListener(new DialogInterface.OnCancelListener() { - @Override - public void onCancel(DialogInterface dialog) { - pagedView.setTransitionEffect(oldEffect); - } - }) + if (isAllAppsVisible()) { + mAppsCustomizeContent.exitOverviewMode(true); + } else { + mWorkspace.exitOverviewMode(true); + } + + builder.setPositiveButton(android.R.string.ok, null) .setOnDismissListener(new DialogInterface.OnDismissListener() { @Override public void onDismiss(DialogInterface dialog) { @@ -1115,6 +1112,58 @@ public class Launcher extends Activity mTransitionEffectDialog.getWindow().getDecorView().setAlpha(0.6f); } + public void onClickTransitionEffectOverflowMenuButton(View v) { + final PopupMenu popupMenu = new PopupMenu(this, v); + + final Menu menu = popupMenu.getMenu(); + popupMenu.inflate(R.menu.scrolling_settings); + MenuItem pageOutlines = menu.findItem(R.id.scrolling_page_outlines); + MenuItem fadeAdjacent = menu.findItem(R.id.scrolling_fade_adjacent); + + pageOutlines.setVisible(!isAllAppsVisible()); + pageOutlines.setChecked(SettingsProvider.getBoolean(this, + SettingsProvider.SETTINGS_UI_HOMESCREEN_SCROLLING_PAGE_OUTLINES, + R.bool.preferences_interface_homescreen_scrolling_page_outlines_default + )); + + fadeAdjacent.setChecked(SettingsProvider.getBoolean(this, + !isAllAppsVisible() ? + SettingsProvider.SETTINGS_UI_HOMESCREEN_SCROLLING_FADE_ADJACENT : + SettingsProvider.SETTINGS_UI_DRAWER_SCROLLING_FADE_ADJACENT, + !isAllAppsVisible() ? + R.bool.preferences_interface_homescreen_scrolling_fade_adjacent_default : + R.bool.preferences_interface_drawer_scrolling_fade_adjacent_default + )); + + final PagedView pagedView = !isAllAppsVisible() ? mWorkspace : mAppsCustomizeContent; + + popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { + @Override + public boolean onMenuItemClick(MenuItem item) { + switch (item.getItemId()) { + case R.id.scrolling_page_outlines: + SettingsProvider.get(Launcher.this).edit() + .putBoolean(SettingsProvider.SETTINGS_UI_HOMESCREEN_SCROLLING_PAGE_OUTLINES, !item.isChecked()).commit(); + mWorkspace.setShowOutlines(!item.isChecked()); + break; + case R.id.scrolling_fade_adjacent: + SettingsProvider.get(Launcher.this).edit() + .putBoolean(!isAllAppsVisible() ? + SettingsProvider.SETTINGS_UI_HOMESCREEN_SCROLLING_FADE_ADJACENT : + SettingsProvider.SETTINGS_UI_DRAWER_SCROLLING_FADE_ADJACENT, !item.isChecked()).commit(); + pagedView.setFadeInAdjacentScreens(!item.isChecked()); + break; + default: + return false; + } + + return true; + } + }); + + popupMenu.show(); + } + public interface QSBScroller { public void setScrollY(int scrollY); } diff --git a/src/com/android/launcher3/PagedView.java b/src/com/android/launcher3/PagedView.java index b70175ee8..59b62604c 100644 --- a/src/com/android/launcher3/PagedView.java +++ b/src/com/android/launcher3/PagedView.java @@ -1040,6 +1040,10 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc } } + public void setFadeInAdjacentScreens(boolean fade) { + mFadeInAdjacentScreens = fade; + } + protected void screenScrolled(int screenCenter) { boolean isInOverscroll = mOverScrollX < 0 || mOverScrollX > mMaxScrollX; // Apply transition effect and adjacent screen fade if enabled diff --git a/src/com/android/launcher3/WallpaperPickerActivity.java b/src/com/android/launcher3/WallpaperPickerActivity.java index de540f899..1dd4db7e4 100644 --- a/src/com/android/launcher3/WallpaperPickerActivity.java +++ b/src/com/android/launcher3/WallpaperPickerActivity.java @@ -66,7 +66,7 @@ import android.widget.ListAdapter; import com.android.gallery3d.exif.ExifInterface; import com.android.photos.BitmapRegionTileSource; -import org.cyanogenmod.trebuchet.settings.SettingsProvider; +import com.android.launcher3.settings.SettingsProvider; import java.io.BufferedInputStream; import java.io.File; diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index 087d6d85f..a4b625185 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -261,8 +261,10 @@ public class Workspace extends SmoothPagedView private float mCurrentScale; private float mNewScale; private float[] mOldBackgroundAlphas; + private float[] mOldBackgroundAlphaMultipliers; private float[] mOldAlphas; private float[] mNewBackgroundAlphas; + private float[] mNewBackgroundAlphaMultipliers; private float[] mNewAlphas; private int mLastChildCount = -1; private float mTransitionProgress; @@ -313,13 +315,15 @@ public class Workspace extends SmoothPagedView mShowOutlines = SettingsProvider.getBoolean(context, SettingsProvider.SETTINGS_UI_HOMESCREEN_SCROLLING_PAGE_OUTLINES, R.bool.preferences_interface_homescreen_scrolling_page_outlines_default); + mWorkspaceFadeInAdjacentScreens = SettingsProvider.getBoolean(context, + SettingsProvider.SETTINGS_UI_HOMESCREEN_SCROLLING_FADE_ADJACENT, + R.bool.preferences_interface_homescreen_scrolling_fade_adjacent_default); TransitionEffect.setFromString(this, SettingsProvider.getString(context, SettingsProvider.SETTINGS_UI_HOMESCREEN_SCROLLING_TRANSITION_EFFECT, R.string.preferences_interface_homescreen_scrolling_transition_effect)); mLauncher = (Launcher) context; final Resources res = getResources(); - mWorkspaceFadeInAdjacentScreens = res.getBoolean(R.bool.config_workspaceFadeAdjacentScreens); mFadeInAdjacentScreens = false; mWallpaperManager = WallpaperManager.getInstance(context); @@ -1427,7 +1431,7 @@ public class Workspace extends SmoothPagedView float scrollProgress = getScrollProgress(screenCenter, child, i); float alpha = 1 - Math.abs(scrollProgress); child.getShortcutsAndWidgets().setAlpha(alpha); - if (!mIsDragOccuring) { + if (!mIsDragOccuring && !mShowOutlines) { child.setBackgroundAlphaMultiplier( backgroundAlphaInterpolator(Math.abs(scrollProgress))); } else { @@ -1517,6 +1521,15 @@ public class Workspace extends SmoothPagedView return listener; } + public void setShowOutlines(boolean show) { + mShowOutlines = show; + } + + @Override + public void setFadeInAdjacentScreens(boolean fade) { + mWorkspaceFadeInAdjacentScreens = fade; + } + @Override protected void screenScrolled(int screenCenter) { final boolean isRtl = isLayoutRtl(); @@ -1529,9 +1542,10 @@ public class Workspace extends SmoothPagedView } mUseTransitionEffect = !isOnLastPageBeforeCustomContent && mState == State.NORMAL && !mIsSwitchingState; + updatePageAlphaValues(screenCenter); + super.screenScrolled(screenCenter); - updatePageAlphaValues(screenCenter); updateStateForCustomContent(screenCenter); enableHwLayersOnVisiblePages(); @@ -1856,8 +1870,10 @@ public class Workspace extends SmoothPagedView if (mLastChildCount == childCount) return; mOldBackgroundAlphas = new float[childCount]; + mOldBackgroundAlphaMultipliers = new float[childCount]; mOldAlphas = new float[childCount]; mNewBackgroundAlphas = new float[childCount]; + mNewBackgroundAlphaMultipliers = new float[childCount]; mNewAlphas = new float[childCount]; } @@ -2034,6 +2050,7 @@ public class Workspace extends SmoothPagedView final boolean stateIsSmall = (state == State.SMALL); final boolean stateIsOverview = (state == State.OVERVIEW); float finalBackgroundAlpha = (stateIsSpringLoaded || stateIsOverview) ? 1.0f : 0f; + float finalBackgroundAlphaMultiplier = (stateIsSpringLoaded || stateIsOverview || mShowOutlines) ? 1.0f : 0f; float finalHotseatAndPageIndicatorAlpha = (stateIsOverview || stateIsSmall) ? 0f : 1f; float finalOverviewPanelAlpha = stateIsOverview ? 1f : 0f; float finalSearchBarAlpha = !stateIsNormal ? 0f : 1f; @@ -2111,9 +2128,12 @@ public class Workspace extends SmoothPagedView mNewAlphas[i] = finalAlpha; if (animated) { mOldBackgroundAlphas[i] = cl.getBackgroundAlpha(); + mOldBackgroundAlphaMultipliers[i] = cl.getBackgroundAlphaMultiplier(); mNewBackgroundAlphas[i] = finalBackgroundAlpha; + mNewBackgroundAlphaMultipliers[i] = finalBackgroundAlphaMultiplier; } else { cl.setBackgroundAlpha(finalBackgroundAlpha); + cl.setBackgroundAlphaMultiplier(finalBackgroundAlphaMultiplier); cl.setShortcutAndWidgetAlpha(finalAlpha); } } @@ -2154,6 +2174,9 @@ public class Workspace extends SmoothPagedView cl.setBackgroundAlpha( a * mOldBackgroundAlphas[i] + b * mNewBackgroundAlphas[i]); + cl.setBackgroundAlphaMultiplier( + a * mOldBackgroundAlphaMultipliers[i] + + b * mNewBackgroundAlphaMultipliers[i]); } }); anim.play(bgAnim); diff --git a/src/com/android/launcher3/settings/SettingsProvider.java b/src/com/android/launcher3/settings/SettingsProvider.java index 472124684..501a7ea73 100644 --- a/src/com/android/launcher3/settings/SettingsProvider.java +++ b/src/com/android/launcher3/settings/SettingsProvider.java @@ -29,7 +29,9 @@ public final class SettingsProvider { public static final String SETTINGS_UI_HOMESCREEN_SCROLLING_TRANSITION_EFFECT = "ui_homescreen_scrolling_transition_effect"; public static final String SETTINGS_UI_HOMESCREEN_SCROLLING_WALLPAPER_SCROLL = "ui_homescreen_scrolling_wallpaper_scroll"; public static final String SETTINGS_UI_HOMESCREEN_SCROLLING_PAGE_OUTLINES = "ui_homescreen_scrolling_page_outlines"; + public static final String SETTINGS_UI_HOMESCREEN_SCROLLING_FADE_ADJACENT = "ui_homescreen_scrolling_fade_adjacent"; public static final String SETTINGS_UI_DRAWER_SCROLLING_TRANSITION_EFFECT = "ui_drawer_scrolling_transition_effect"; + public static final String SETTINGS_UI_DRAWER_SCROLLING_FADE_ADJACENT = "ui_drawer_scrolling_fade_adjacent"; public static final String SETTINGS_UI_GENERAL_ICONS_LARGE = "ui_general_icons_large"; public static final String SETTINGS_UI_GENERAL_ICONS_TEXT_FONT_FAMILY = "ui_general_icons_text_font"; public static final String SETTINGS_UI_GENERAL_ICONS_TEXT_FONT_STYLE = "ui_general_icons_text_font_style"; |