summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
authorNebojsa Cvetkovic <nebkat@gmail.com>2014-01-19 12:05:57 +0000
committerDanesh M <daneshm90@gmail.com>2014-01-24 16:25:20 -0800
commit4428b065d9d674a84b066015ab873f8849f2a922 (patch)
tree548870602e578b13a07c9d1f696a2acbdaaa8008 /src/com
parent912a62bc58b967e097aa35b13c092a48401a810f (diff)
downloadandroid_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.java30
-rw-r--r--src/com/android/launcher3/Launcher.java163
-rw-r--r--src/com/android/launcher3/PagedView.java4
-rw-r--r--src/com/android/launcher3/WallpaperPickerActivity.java2
-rw-r--r--src/com/android/launcher3/Workspace.java29
-rw-r--r--src/com/android/launcher3/settings/SettingsProvider.java2
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";