Cleanup reorder animations to not require layout on every frame
=> Extending on previous CL to separate multiple translation properties
and avoiding expensive layout pass
Test: manual
Change-Id: I058da7367fb320b9f432bef9482be2966d3a7d42
diff --git a/src/com/android/launcher3/BubbleTextView.java b/src/com/android/launcher3/BubbleTextView.java
index e8e88c4..d7d4a27 100644
--- a/src/com/android/launcher3/BubbleTextView.java
+++ b/src/com/android/launcher3/BubbleTextView.java
@@ -79,8 +79,10 @@
private static final int[] STATE_PRESSED = new int[] {android.R.attr.state_pressed};
- private final PointF mTranslationForReorder = new PointF(0, 0);
- private float mScaleForReorder = 1f;
+ private final PointF mTranslationForReorderBounce = new PointF(0, 0);
+ private final PointF mTranslationForReorderPreview = new PointF(0, 0);
+
+ private float mScaleForReorderBounce = 1f;
private static final Property<BubbleTextView, Float> DOT_SCALE_PROPERTY
= new Property<BubbleTextView, Float>(Float.TYPE, "dotScale") {
@@ -675,24 +677,39 @@
return mIconSize;
}
- public void setReorderOffset(float x, float y) {
- mTranslationForReorder.set(x, y);
- super.setTranslationX(x);
- super.setTranslationY(y);
+ private void updateTranslation() {
+ super.setTranslationX(mTranslationForReorderBounce.x + mTranslationForReorderPreview.x);
+ super.setTranslationY(mTranslationForReorderBounce.y + mTranslationForReorderPreview.y);
}
- public void getReorderOffset(PointF offset) {
- offset.set(mTranslationForReorder);
+ public void setReorderBounceOffset(float x, float y) {
+ mTranslationForReorderBounce.set(x, y);
+ updateTranslation();
}
- public void setReorderScale(float scale) {
- mScaleForReorder = scale;
+ public void getReorderBounceOffset(PointF offset) {
+ offset.set(mTranslationForReorderBounce);
+ }
+
+ @Override
+ public void setReorderPreviewOffset(float x, float y) {
+ mTranslationForReorderPreview.set(x, y);
+ updateTranslation();
+ }
+
+ @Override
+ public void getReorderPreviewOffset(PointF offset) {
+ offset.set(mTranslationForReorderPreview);
+ }
+
+ public void setReorderBounceScale(float scale) {
+ mScaleForReorderBounce = scale;
super.setScaleX(scale);
super.setScaleY(scale);
}
- public float getReorderScale() {
- return mScaleForReorder;
+ public float getReorderBounceScale() {
+ return mScaleForReorderBounce;
}
public View getView() {