diff options
author | Jon Miranda <jonmiranda@google.com> | 2017-04-20 12:07:38 -0700 |
---|---|---|
committer | Jon Miranda <jonmiranda@google.com> | 2017-05-23 10:02:51 -0700 |
commit | 4e11c2738a346fe2859c2d03e3133671e5da49ec (patch) | |
tree | 5570fa051502b27134263092c4030bb4102c040b /src/com/android/launcher3/allapps/AllAppsGridAdapter.java | |
parent | 09273b676e9659890651459c11bda73d67e925c0 (diff) | |
download | android_packages_apps_Trebuchet-4e11c2738a346fe2859c2d03e3133671e5da49ec.tar.gz android_packages_apps_Trebuchet-4e11c2738a346fe2859c2d03e3133671e5da49ec.tar.bz2 android_packages_apps_Trebuchet-4e11c2738a346fe2859c2d03e3133671e5da49ec.zip |
Add physics motion to items in all apps.
Motion applied to:
- Icons
- Prediction icons
- Prediction divider
Bug: 38349031
Change-Id: I376e6e39080c8c80463a0ce8b104b05e4d576f17
Diffstat (limited to 'src/com/android/launcher3/allapps/AllAppsGridAdapter.java')
-rw-r--r-- | src/com/android/launcher3/allapps/AllAppsGridAdapter.java | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/src/com/android/launcher3/allapps/AllAppsGridAdapter.java b/src/com/android/launcher3/allapps/AllAppsGridAdapter.java index cfd04e2e0..d3d23ca24 100644 --- a/src/com/android/launcher3/allapps/AllAppsGridAdapter.java +++ b/src/com/android/launcher3/allapps/AllAppsGridAdapter.java @@ -19,6 +19,7 @@ import android.content.Context; import android.content.Intent; import android.content.res.Resources; import android.graphics.Point; +import android.support.animation.SpringAnimation; import android.support.v4.view.accessibility.AccessibilityEventCompat; import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat; import android.support.v4.view.accessibility.AccessibilityRecordCompat; @@ -38,6 +39,8 @@ import com.android.launcher3.BubbleTextView; import com.android.launcher3.Launcher; import com.android.launcher3.R; import com.android.launcher3.allapps.AlphabeticalAppsList.AdapterItem; +import com.android.launcher3.anim.SpringAnimationHandler; +import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.discovery.AppDiscoveryAppInfo; import com.android.launcher3.discovery.AppDiscoveryItemView; import com.android.launcher3.util.PackageManagerHelper; @@ -80,6 +83,8 @@ public class AllAppsGridAdapter extends RecyclerView.Adapter<AllAppsGridAdapter. | VIEW_TYPE_PREDICTION_ICON; public static final int VIEW_TYPE_MASK_CONTENT = VIEW_TYPE_MASK_ICON | VIEW_TYPE_DISCOVERY_ITEM; + public static final int VIEW_TYPE_MASK_HAS_SPRINGS = VIEW_TYPE_MASK_ICON + | VIEW_TYPE_PREDICTION_DIVIDER; public interface BindViewCallback { @@ -90,6 +95,12 @@ public class AllAppsGridAdapter extends RecyclerView.Adapter<AllAppsGridAdapter. * ViewHolder for each icon. */ public static class ViewHolder extends RecyclerView.ViewHolder { + + /** + * Springs used for items where isViewType(viewType, VIEW_TYPE_MASK_HAS_SPRINGS) is true. + */ + private SpringAnimation spring; + public ViewHolder(View v) { super(v); } @@ -202,8 +213,11 @@ public class AllAppsGridAdapter extends RecyclerView.Adapter<AllAppsGridAdapter. // The intent to send off to the market app, updated each time the search query changes. private Intent mMarketSearchIntent; + private SpringAnimationHandler mSpringAnimationHandler; + public AllAppsGridAdapter(Launcher launcher, AlphabeticalAppsList apps, View.OnClickListener - iconClickListener, View.OnLongClickListener iconLongClickListener) { + iconClickListener, View.OnLongClickListener iconLongClickListener, + SpringAnimationHandler springAnimationHandler) { Resources res = launcher.getResources(); mLauncher = launcher; mApps = apps; @@ -214,6 +228,7 @@ public class AllAppsGridAdapter extends RecyclerView.Adapter<AllAppsGridAdapter. mLayoutInflater = LayoutInflater.from(launcher); mIconClickListener = iconClickListener; mIconLongClickListener = iconLongClickListener; + mSpringAnimationHandler = springAnimationHandler; } public static boolean isDividerViewType(int viewType) { @@ -236,6 +251,10 @@ public class AllAppsGridAdapter extends RecyclerView.Adapter<AllAppsGridAdapter. mGridLayoutMgr.setSpanCount(appsPerRow); } + public int getNumAppsPerRow() { + return mAppsPerRow; + } + public void setIconFocusListener(OnFocusChangeListener focusListener) { mIconFocusListener = focusListener; } @@ -327,7 +346,6 @@ public class AllAppsGridAdapter extends RecyclerView.Adapter<AllAppsGridAdapter. AppInfo info = mApps.getAdapterItems().get(position).appInfo; BubbleTextView icon = (BubbleTextView) holder.itemView; icon.applyFromApplicationInfo(info); - icon.setAccessibilityDelegate(mLauncher.getAccessibilityDelegate()); break; case VIEW_TYPE_DISCOVERY_ITEM: AppDiscoveryAppInfo appDiscoveryAppInfo = (AppDiscoveryAppInfo) @@ -365,6 +383,23 @@ public class AllAppsGridAdapter extends RecyclerView.Adapter<AllAppsGridAdapter. } @Override + public void onViewAttachedToWindow(ViewHolder holder) { + int type = holder.getItemViewType(); + if (FeatureFlags.LAUNCHER3_PHYSICS && isViewType(type, VIEW_TYPE_MASK_HAS_SPRINGS)) { + holder.spring = mSpringAnimationHandler.add(holder.itemView, + holder.getAdapterPosition(), mApps, mAppsPerRow, holder.spring); + } + } + + @Override + public void onViewDetachedFromWindow(ViewHolder holder) { + int type = holder.getItemViewType(); + if (FeatureFlags.LAUNCHER3_PHYSICS && isViewType(type, VIEW_TYPE_MASK_HAS_SPRINGS)) { + holder.spring = mSpringAnimationHandler.remove(holder.spring); + } + } + + @Override public boolean onFailedToRecycleView(ViewHolder holder) { // Always recycle and we will reset the view when it is bound return true; |