diff options
Diffstat (limited to 'core/java/android/view')
| -rw-r--r-- | core/java/android/view/DisplayList.java | 18 | ||||
| -rw-r--r-- | core/java/android/view/GLES20DisplayList.java | 27 | ||||
| -rw-r--r-- | core/java/android/view/View.java | 33 | ||||
| -rw-r--r-- | core/java/android/view/ViewPropertyAnimator.java | 27 |
4 files changed, 98 insertions, 7 deletions
diff --git a/core/java/android/view/DisplayList.java b/core/java/android/view/DisplayList.java index 2829215..e53ce8b 100644 --- a/core/java/android/view/DisplayList.java +++ b/core/java/android/view/DisplayList.java @@ -438,6 +438,21 @@ public abstract class DisplayList { public abstract float getTranslationY(); /** + * Sets the translation value for the display list on the Z axis + * + * @see View#setTranslationZ(float) + * @see #getTranslationZ() + */ + public abstract void setTranslationZ(float translationZ); + + /** + * Returns the translation value for this display list on the Z axis. + * + * @see #setTranslationZ(float) + */ + public abstract float getTranslationZ(); + + /** * Sets the rotation value for the display list around the Z axis * * @param rotation The rotation value of the display list, in degrees @@ -536,7 +551,8 @@ public abstract class DisplayList { * * @hide */ - public abstract void setTransformationInfo(float alpha, float translationX, float translationY, + public abstract void setTransformationInfo(float alpha, + float translationX, float translationY, float translationZ, float rotation, float rotationX, float rotationY, float scaleX, float scaleY); /** diff --git a/core/java/android/view/GLES20DisplayList.java b/core/java/android/view/GLES20DisplayList.java index 574b7bb..7944e66 100644 --- a/core/java/android/view/GLES20DisplayList.java +++ b/core/java/android/view/GLES20DisplayList.java @@ -231,6 +231,21 @@ class GLES20DisplayList extends DisplayList { } @Override + public void setTranslationZ(float translationZ) { + if (hasNativeDisplayList()) { + nSetTranslationZ(mFinalizer.mNativeDisplayList, translationZ); + } + } + + @Override + public float getTranslationZ() { + if (hasNativeDisplayList()) { + return nGetTranslationZ(mFinalizer.mNativeDisplayList); + } + return 0.0f; + } + + @Override public void setRotation(float rotation) { if (hasNativeDisplayList()) { nSetRotation(mFinalizer.mNativeDisplayList, rotation); @@ -306,10 +321,12 @@ class GLES20DisplayList extends DisplayList { } @Override - public void setTransformationInfo(float alpha, float translationX, float translationY, + public void setTransformationInfo(float alpha, + float translationX, float translationY, float translationZ, float rotation, float rotationX, float rotationY, float scaleX, float scaleY) { if (hasNativeDisplayList()) { - nSetTransformationInfo(mFinalizer.mNativeDisplayList, alpha, translationX, translationY, + nSetTransformationInfo(mFinalizer.mNativeDisplayList, alpha, + translationX, translationY, translationZ, rotation, rotationX, rotationY, scaleX, scaleY); } } @@ -466,14 +483,15 @@ class GLES20DisplayList extends DisplayList { boolean hasOverlappingRendering); private static native void nSetTranslationX(int displayList, float translationX); private static native void nSetTranslationY(int displayList, float translationY); + private static native void nSetTranslationZ(int displayList, float translationZ); private static native void nSetRotation(int displayList, float rotation); private static native void nSetRotationX(int displayList, float rotationX); private static native void nSetRotationY(int displayList, float rotationY); private static native void nSetScaleX(int displayList, float scaleX); private static native void nSetScaleY(int displayList, float scaleY); private static native void nSetTransformationInfo(int displayList, float alpha, - float translationX, float translationY, float rotation, float rotationX, - float rotationY, float scaleX, float scaleY); + float translationX, float translationY, float translationZ, + float rotation, float rotationX, float rotationY, float scaleX, float scaleY); private static native void nSetStaticMatrix(int displayList, int nativeMatrix); private static native void nSetAnimationMatrix(int displayList, int animationMatrix); @@ -489,6 +507,7 @@ class GLES20DisplayList extends DisplayList { private static native float nGetScaleY(int displayList); private static native float nGetTranslationX(int displayList); private static native float nGetTranslationY(int displayList); + private static native float nGetTranslationZ(int displayList); private static native float nGetRotation(int displayList); private static native float nGetRotationX(int displayList); private static native float nGetRotationY(int displayList); diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 0439b50..a0e6924 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -2981,6 +2981,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback, @ViewDebug.ExportedProperty float mTranslationY = 0f; + @ViewDebug.ExportedProperty + float mTranslationZ = 0f; + /** * The amount of scale in the x direction around the pivot point. A * value of 1 means no scaling is applied. @@ -10508,6 +10511,35 @@ public class View implements Drawable.Callback, KeyEvent.Callback, } /** + * @hide + */ + @ViewDebug.ExportedProperty(category = "drawing") + public float getTranslationZ() { + return mTransformationInfo != null ? mTransformationInfo.mTranslationZ : 0; + } + + /** + * @hide + */ + public void setTranslationZ(float translationZ) { + ensureTransformationInfo(); + final TransformationInfo info = mTransformationInfo; + if (info.mTranslationZ != translationZ) { + invalidateViewProperty(true, false); + info.mTranslationZ = translationZ; + info.mMatrixDirty = true; + invalidateViewProperty(false, true); + if (mDisplayList != null) { + mDisplayList.setTranslationZ(translationZ); + } + if ((mPrivateFlags2 & PFLAG2_VIEW_QUICK_REJECTED) == PFLAG2_VIEW_QUICK_REJECTED) { + // View was rejected last time it was drawn by its parent; this may have changed + invalidateParentIfNeeded(); + } + } + } + + /** * Hit rectangle in parent's coordinates * * @param outRect The hit rectangle of the view. @@ -14173,6 +14205,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, } displayList.setTransformationInfo(alpha, mTransformationInfo.mTranslationX, mTransformationInfo.mTranslationY, + mTransformationInfo.mTranslationZ, mTransformationInfo.mRotation, mTransformationInfo.mRotationX, mTransformationInfo.mRotationY, mTransformationInfo.mScaleX, mTransformationInfo.mScaleY); diff --git a/core/java/android/view/ViewPropertyAnimator.java b/core/java/android/view/ViewPropertyAnimator.java index 67a94be..391b345 100644 --- a/core/java/android/view/ViewPropertyAnimator.java +++ b/core/java/android/view/ViewPropertyAnimator.java @@ -144,9 +144,10 @@ public class ViewPropertyAnimator { private static final int X = 0x0080; private static final int Y = 0x0100; private static final int ALPHA = 0x0200; + private static final int TRANSLATION_Z = 0x0400; - private static final int TRANSFORM_MASK = TRANSLATION_X | TRANSLATION_Y | SCALE_X | SCALE_Y | - ROTATION | ROTATION_X | ROTATION_Y | X | Y; + private static final int TRANSFORM_MASK = TRANSLATION_X | TRANSLATION_Y | TRANSLATION_Z | + SCALE_X | SCALE_Y | ROTATION | ROTATION_X | ROTATION_Y | X | Y; /** * The mechanism by which the user can request several properties that are then animated @@ -573,6 +574,22 @@ public class ViewPropertyAnimator { } /** + * @hide + */ + public ViewPropertyAnimator translationZ(float value) { + animateProperty(TRANSLATION_Z, value); + return this; + } + + /** + * @hide + */ + public ViewPropertyAnimator translationZBy(float value) { + animatePropertyBy(TRANSLATION_Z, value); + return this; + } + + /** * This method will cause the View's <code>translationY</code> property to be animated to the * specified value. Animations already running on the property will be canceled. * @@ -909,6 +926,10 @@ public class ViewPropertyAnimator { info.mTranslationY = value; if (displayList != null) displayList.setTranslationY(value); break; + case TRANSLATION_Z: + info.mTranslationZ = value; + if (displayList != null) displayList.setTranslationZ(value); + break; case ROTATION: info.mRotation = value; if (displayList != null) displayList.setRotation(value); @@ -957,6 +978,8 @@ public class ViewPropertyAnimator { return info.mTranslationX; case TRANSLATION_Y: return info.mTranslationY; + case TRANSLATION_Z: + return info.mTranslationZ; case ROTATION: return info.mRotation; case ROTATION_X: |
