diff options
author | Adam Cohen <adamcohen@google.com> | 2011-07-07 16:38:18 -0700 |
---|---|---|
committer | Adam Cohen <adamcohen@google.com> | 2011-07-07 16:59:45 -0700 |
commit | 8dfcba4af7a7ece09e8c7d96053e54f3a383e905 (patch) | |
tree | ae4f19fca62ced61657c228ce5cc1325ff49d1a3 /src/com/android/launcher2/Folder.java | |
parent | eb99f1648c63ad35e1a528e566aa47df581864f8 (diff) | |
download | android_packages_apps_Trebuchet-8dfcba4af7a7ece09e8c7d96053e54f3a383e905.tar.gz android_packages_apps_Trebuchet-8dfcba4af7a7ece09e8c7d96053e54f3a383e905.tar.bz2 android_packages_apps_Trebuchet-8dfcba4af7a7ece09e8c7d96053e54f3a383e905.zip |
Substantially improved performance of dragging and drop animations
-> Took DragView drawing out of the window and put it into the DragLayer
-> Added fade-in/out animations to transition between the final view
and the DragView, after the view animates
-> Enabled hardware layers on Folder items which improves the
performance Folder reordering
Change-Id: I4d92ca9fba172d1bab9efc215a99abcaadcdf503
Diffstat (limited to 'src/com/android/launcher2/Folder.java')
-rw-r--r-- | src/com/android/launcher2/Folder.java | 40 |
1 files changed, 24 insertions, 16 deletions
diff --git a/src/com/android/launcher2/Folder.java b/src/com/android/launcher2/Folder.java index 347eba045..8a1b9576f 100644 --- a/src/com/android/launcher2/Folder.java +++ b/src/com/android/launcher2/Folder.java @@ -35,7 +35,6 @@ import android.view.Menu; import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; -import android.view.View.OnClickListener; import android.view.animation.AccelerateInterpolator; import android.view.animation.DecelerateInterpolator; import android.view.inputmethod.EditorInfo; @@ -43,8 +42,6 @@ import android.view.inputmethod.InputMethodManager; import android.widget.AdapterView; import android.widget.LinearLayout; import android.widget.TextView; -import android.widget.AdapterView.OnItemClickListener; -import android.widget.AdapterView.OnItemLongClickListener; import com.android.launcher.R; import com.android.launcher2.FolderInfo.FolderListener; @@ -54,9 +51,8 @@ import java.util.ArrayList; /** * Represents a set of icons chosen by the user or generated by the system. */ -public class Folder extends LinearLayout implements DragSource, OnItemLongClickListener, - OnItemClickListener, OnClickListener, View.OnLongClickListener, DropTarget, FolderListener, - TextView.OnEditorActionListener { +public class Folder extends LinearLayout implements DragSource, View.OnClickListener, + View.OnLongClickListener, DropTarget, FolderListener, TextView.OnEditorActionListener { protected DragController mDragController; @@ -102,6 +98,7 @@ public class Folder extends LinearLayout implements DragSource, OnItemLongClickL private int mFolderNameHeight; private Rect mHitRect = new Rect(); private Rect mTempRect = new Rect(); + private boolean mFirstOpen = true; private boolean mIsEditingName = false; private InputMethodManager mInputMethodManager; @@ -135,7 +132,6 @@ public class Folder extends LinearLayout implements DragSource, OnItemLongClickL if (sHintText == null) { sHintText = res.getString(R.string.folder_hint_text); } - setLayerType(LAYER_TYPE_HARDWARE, null); } @Override @@ -177,15 +173,6 @@ public class Folder extends LinearLayout implements DragSource, OnItemLongClickL } }; - public void onItemClick(AdapterView parent, View v, int position, long id) { - ShortcutInfo app = (ShortcutInfo) parent.getItemAtPosition(position); - int[] pos = new int[2]; - v.getLocationOnScreen(pos); - app.intent.setSourceBounds(new Rect(pos[0], pos[1], - pos[0] + v.getWidth(), pos[1] + v.getHeight())); - mLauncher.startActivitySafely(app.intent, app); - } - public void onClick(View v) { Object tag = v.getTag(); if (tag instanceof ShortcutInfo) { @@ -393,6 +380,12 @@ public class Folder extends LinearLayout implements DragSource, OnItemLongClickL } public void animateOpen() { + if (mFirstOpen) { + setLayerType(LAYER_TYPE_HARDWARE, null); + buildLayer(); + mFirstOpen = false; + } + positionAndSizeAsIcon(); if (!(getParent() instanceof DragLayer)) return; @@ -433,14 +426,25 @@ public class Folder extends LinearLayout implements DragSource, OnItemLongClickL @Override public void onAnimationEnd(Animator animation) { mState = STATE_OPEN; + setLayerType(LAYER_TYPE_NONE, null); + enableHardwareLayersForChildren(); } }); oa.setDuration(mExpandDuration); oa.start(); } + void enableHardwareLayersForChildren() { + ArrayList<View> children = getItemsInReadingOrder(); + for (View child: children) { + child.setLayerType(LAYER_TYPE_HARDWARE, null); + } + } + public void animateClosed() { if (!(getParent() instanceof DragLayer)) return; + setLayerType(LAYER_TYPE_HARDWARE, null); + buildLayer(); ObjectAnimator oa; if (mMode == PARTIAL_GROW) { @@ -957,4 +961,8 @@ public class Folder extends LinearLayout implements DragSource, OnItemLongClickL } return mItemsInReadingOrder; } + + public void getLocationInDragLayer(int[] loc) { + mLauncher.getDragLayer().getLocationInDragLayer(this, loc); + } } |