Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ddb715b2 authored by Dianne Hackborn's avatar Dianne Hackborn
Browse files

Pull animation attributes out of main view class.

These are now in a separate class that is only allocated when
needed by the view.

Change-Id: I9601bb43b3b4bfdabd982b02f7cd7534437b8ac3
parent 4ee36669
Loading
Loading
Loading
Loading
+320 −232

File changed.

Preview size limit exceeded, changes collapsed.

+25 −22
Original line number Diff line number Diff line
@@ -51,7 +51,7 @@ public class ViewPropertyAnimator {
     * The View whose properties are being animated by this class. This is set at
     * construction time.
     */
    private View mView;
    private final View mView;

    /**
     * The duration of the underlying Animator object. By default, we don't set the duration
@@ -225,6 +225,7 @@ public class ViewPropertyAnimator {
     */
    ViewPropertyAnimator(View view) {
        mView = view;
        view.ensureTransformationInfo();
    }

    /**
@@ -721,36 +722,37 @@ public class ViewPropertyAnimator {
     * @param value The value to set the property to
     */
    private void setValue(int propertyConstant, float value) {
        final View.TransformationInfo info = mView.mTransformationInfo;
        switch (propertyConstant) {
            case TRANSLATION_X:
                mView.mTranslationX = value;
                info.mTranslationX = value;
                break;
            case TRANSLATION_Y:
                mView.mTranslationY = value;
                info.mTranslationY = value;
                break;
            case ROTATION:
                mView.mRotation = value;
                info.mRotation = value;
                break;
            case ROTATION_X:
                mView.mRotationX = value;
                info.mRotationX = value;
                break;
            case ROTATION_Y:
                mView.mRotationY = value;
                info.mRotationY = value;
                break;
            case SCALE_X:
                mView.mScaleX = value;
                info.mScaleX = value;
                break;
            case SCALE_Y:
                mView.mScaleY = value;
                info.mScaleY = value;
                break;
            case X:
                mView.mTranslationX = value - mView.mLeft;
                info.mTranslationX = value - mView.mLeft;
                break;
            case Y:
                mView.mTranslationY = value - mView.mTop;
                info.mTranslationY = value - mView.mTop;
                break;
            case ALPHA:
                mView.mAlpha = value;
                info.mAlpha = value;
                break;
        }
    }
@@ -762,27 +764,28 @@ public class ViewPropertyAnimator {
     * @return float The value of the named property
     */
    private float getValue(int propertyConstant) {
        final View.TransformationInfo info = mView.mTransformationInfo;
        switch (propertyConstant) {
            case TRANSLATION_X:
                return mView.mTranslationX;
                return info.mTranslationX;
            case TRANSLATION_Y:
                return mView.mTranslationY;
                return info.mTranslationY;
            case ROTATION:
                return mView.mRotation;
                return info.mRotation;
            case ROTATION_X:
                return mView.mRotationX;
                return info.mRotationX;
            case ROTATION_Y:
                return mView.mRotationY;
                return info.mRotationY;
            case SCALE_X:
                return mView.mScaleX;
                return info.mScaleX;
            case SCALE_Y:
                return mView.mScaleY;
                return info.mScaleY;
            case X:
                return mView.mLeft + mView.mTranslationX;
                return mView.mLeft + info.mTranslationX;
            case Y:
                return mView.mTop + mView.mTranslationY;
                return mView.mTop + info.mTranslationY;
            case ALPHA:
                return mView.mAlpha;
                return info.mAlpha;
        }
        return 0;
    }
@@ -861,7 +864,7 @@ public class ViewPropertyAnimator {
                }
            }
            if ((propertyMask & TRANSFORM_MASK) != 0) {
                mView.mMatrixDirty = true;
                mView.mTransformationInfo.mMatrixDirty = true;
                mView.mPrivateFlags |= View.DRAWN; // force another invalidation
            }
            // invalidate(false) in all cases except if alphaHandled gets set to true
+182 −0
Original line number Diff line number Diff line
@@ -37,6 +37,188 @@ public class Matrix {
    public static final int MPERSP_1 = 7;   //!< use with getValues/setValues
    public static final int MPERSP_2 = 8;   //!< use with getValues/setValues

    /** @hide */
    public static Matrix IDENTITY_MATRIX = new Matrix() {
        void oops() {
            throw new IllegalStateException("Matrix can not be modified");
        }

        @Override
        public void set(Matrix src) {
            oops();
        }

        @Override
        public void reset() {
            oops();
        }

        @Override
        public void setTranslate(float dx, float dy) {
            oops();
        }

        @Override
        public void setScale(float sx, float sy, float px, float py) {
            oops();
        }

        @Override
        public void setScale(float sx, float sy) {
            oops();
        }

        @Override
        public void setRotate(float degrees, float px, float py) {
            oops();
        }

        @Override
        public void setRotate(float degrees) {
            oops();
        }

        @Override
        public void setSinCos(float sinValue, float cosValue, float px, float py) {
            oops();
        }

        @Override
        public void setSinCos(float sinValue, float cosValue) {
            oops();
        }

        @Override
        public void setSkew(float kx, float ky, float px, float py) {
            oops();
        }

        @Override
        public void setSkew(float kx, float ky) {
            oops();
        }

        @Override
        public boolean setConcat(Matrix a, Matrix b) {
            oops();
            return false;
        }

        @Override
        public boolean preTranslate(float dx, float dy) {
            oops();
            return false;
        }

        @Override
        public boolean preScale(float sx, float sy, float px, float py) {
            oops();
            return false;
        }

        @Override
        public boolean preScale(float sx, float sy) {
            oops();
            return false;
        }

        @Override
        public boolean preRotate(float degrees, float px, float py) {
            oops();
            return false;
        }

        @Override
        public boolean preRotate(float degrees) {
            oops();
            return false;
        }

        @Override
        public boolean preSkew(float kx, float ky, float px, float py) {
            oops();
            return false;
        }

        @Override
        public boolean preSkew(float kx, float ky) {
            oops();
            return false;
        }

        @Override
        public boolean preConcat(Matrix other) {
            oops();
            return false;
        }

        @Override
        public boolean postTranslate(float dx, float dy) {
            oops();
            return false;
        }

        @Override
        public boolean postScale(float sx, float sy, float px, float py) {
            oops();
            return false;
        }

        @Override
        public boolean postScale(float sx, float sy) {
            oops();
            return false;
        }

        @Override
        public boolean postRotate(float degrees, float px, float py) {
            oops();
            return false;
        }

        @Override
        public boolean postRotate(float degrees) {
            oops();
            return false;
        }

        @Override
        public boolean postSkew(float kx, float ky, float px, float py) {
            oops();
            return false;
        }

        @Override
        public boolean postSkew(float kx, float ky) {
            oops();
            return false;
        }

        @Override
        public boolean postConcat(Matrix other) {
            oops();
            return false;
        }

        @Override
        public boolean setRectToRect(RectF src, RectF dst, ScaleToFit stf) {
            oops();
            return false;
        }

        @Override
        public boolean setPolyToPoly(float[] src, int srcIndex, float[] dst, int dstIndex,
                int pointCount) {
            oops();
            return false;
        }

        @Override
        public void setValues(float[] values) {
            oops();
        }
    };

    /**
     * @hide
     */