Disable hardware layers for drag views

Also, avoiding allocating paint object every time we swipe
This commit is contained in:
Michael Jurka
2012-06-29 15:17:04 -07:00
parent 3e34d58abb
commit ca99383dae
2 changed files with 9 additions and 9 deletions
+3 -2
View File
@@ -159,6 +159,7 @@ public class CellLayout extends ViewGroup {
private final static PorterDuffXfermode sAddBlendMode =
new PorterDuffXfermode(PorterDuff.Mode.ADD);
private final static Paint sPaint = new Paint();
public CellLayout(Context context) {
this(context, null);
@@ -302,11 +303,11 @@ public class CellLayout extends ViewGroup {
}
public void enableHardwareLayers() {
mShortcutsAndWidgets.setLayerType(LAYER_TYPE_HARDWARE, null);
mShortcutsAndWidgets.setLayerType(LAYER_TYPE_HARDWARE, sPaint);
}
public void disableHardwareLayers() {
mShortcutsAndWidgets.setLayerType(LAYER_TYPE_NONE, null);
mShortcutsAndWidgets.setLayerType(LAYER_TYPE_NONE, sPaint);
}
public void buildHardwareLayer() {
+6 -7
View File
@@ -244,9 +244,6 @@ public class DragView extends View {
public void show(int touchX, int touchY) {
mDragLayer.addView(this);
// Enable hw-layers on this view
setLayerType(View.LAYER_TYPE_HARDWARE, null);
// Start the pick-up animation
DragLayer.LayoutParams lp = new DragLayer.LayoutParams(0, 0);
lp.width = mBitmap.getWidth();
@@ -255,7 +252,12 @@ public class DragView extends View {
setLayoutParams(lp);
setTranslationX(touchX - mRegistrationX);
setTranslationY(touchY - mRegistrationY);
mAnim.start();
// Post the animation to skip other expensive work happening on the first frame
post(new Runnable() {
public void run() {
mAnim.start();
}
});
}
public void cancelAnimation() {
@@ -282,9 +284,6 @@ public class DragView extends View {
void remove() {
if (getParent() != null) {
// Disable hw-layers on this view
setLayerType(View.LAYER_TYPE_NONE, null);
mDragLayer.removeView(DragView.this);
}
}