diff options
Diffstat (limited to 'core/java')
-rw-r--r-- | core/java/android/view/GLES20Canvas.java | 11 | ||||
-rw-r--r-- | core/java/android/view/HardwareCanvas.java | 4 | ||||
-rw-r--r-- | core/java/android/view/RenderNodeAnimator.java | 51 |
3 files changed, 52 insertions, 14 deletions
diff --git a/core/java/android/view/GLES20Canvas.java b/core/java/android/view/GLES20Canvas.java index 34b85d9..11948b2 100644 --- a/core/java/android/view/GLES20Canvas.java +++ b/core/java/android/view/GLES20Canvas.java @@ -18,6 +18,7 @@ package android.view; import android.graphics.Bitmap; import android.graphics.Canvas; +import android.graphics.CanvasProperty; import android.graphics.DrawFilter; import android.graphics.Matrix; import android.graphics.NinePatch; @@ -889,6 +890,16 @@ class GLES20Canvas extends HardwareCanvas { float radius, long paint); @Override + public void drawCircle(CanvasProperty<Float> cx, CanvasProperty<Float> cy, + CanvasProperty<Float> radius, CanvasProperty<Paint> paint) { + nDrawCircle(mRenderer, cx.getNativeContainer(), cy.getNativeContainer(), + radius.getNativeContainer(), paint.getNativeContainer()); + } + + private static native void nDrawCircle(long renderer, long propCx, + long propCy, long propRadius, long propPaint); + + @Override public void drawColor(int color) { drawColor(color, PorterDuff.Mode.SRC_OVER); } diff --git a/core/java/android/view/HardwareCanvas.java b/core/java/android/view/HardwareCanvas.java index 233f846..7ec2cc6 100644 --- a/core/java/android/view/HardwareCanvas.java +++ b/core/java/android/view/HardwareCanvas.java @@ -18,6 +18,7 @@ package android.view; import android.graphics.Bitmap; import android.graphics.Canvas; +import android.graphics.CanvasProperty; import android.graphics.Paint; import android.graphics.Rect; @@ -189,4 +190,7 @@ public abstract class HardwareCanvas extends Canvas { * @hide */ abstract void clearLayerUpdates(); + + public abstract void drawCircle(CanvasProperty<Float> cx, CanvasProperty<Float> cy, + CanvasProperty<Float> radius, CanvasProperty<Paint> paint); } diff --git a/core/java/android/view/RenderNodeAnimator.java b/core/java/android/view/RenderNodeAnimator.java index b70ae3d..b5089b0 100644 --- a/core/java/android/view/RenderNodeAnimator.java +++ b/core/java/android/view/RenderNodeAnimator.java @@ -16,6 +16,8 @@ package android.view; +import android.graphics.CanvasProperty; +import android.graphics.Paint; import android.util.SparseIntArray; import java.lang.ref.WeakReference; @@ -26,18 +28,22 @@ import java.lang.ref.WeakReference; public final class RenderNodeAnimator { // Keep in sync with enum RenderProperty in Animator.h - private static final int TRANSLATION_X = 0; - private static final int TRANSLATION_Y = 1; - private static final int TRANSLATION_Z = 2; - private static final int SCALE_X = 3; - private static final int SCALE_Y = 4; - private static final int ROTATION = 5; - private static final int ROTATION_X = 6; - private static final int ROTATION_Y = 7; - private static final int X = 8; - private static final int Y = 9; - private static final int Z = 10; - private static final int ALPHA = 11; + public static final int TRANSLATION_X = 0; + public static final int TRANSLATION_Y = 1; + public static final int TRANSLATION_Z = 2; + public static final int SCALE_X = 3; + public static final int SCALE_Y = 4; + public static final int ROTATION = 5; + public static final int ROTATION_X = 6; + public static final int ROTATION_Y = 7; + public static final int X = 8; + public static final int Y = 9; + public static final int Z = 10; + public static final int ALPHA = 11; + + // Keep in sync with enum PaintFields in Animator.h + public static final int PAINT_STROKE_WIDTH = 0; + public static final int PAINT_ALPHA = 1; // ViewPropertyAnimator uses a mask for its values, we need to remap them // to the enum values here. RenderPropertyAnimator can't use the mask values @@ -59,8 +65,8 @@ public final class RenderNodeAnimator { }}; // Keep in sync DeltaValueType in Animator.h - private static final int DELTA_TYPE_ABSOLUTE = 0; - private static final int DELTA_TYPE_DELTA = 1; + public static final int DELTA_TYPE_ABSOLUTE = 0; + public static final int DELTA_TYPE_DELTA = 1; private RenderNode mTarget; private long mNativePtr; @@ -74,6 +80,19 @@ public final class RenderNodeAnimator { property, deltaType, deltaValue); } + public RenderNodeAnimator(CanvasProperty<Float> property, int deltaType, float deltaValue) { + mNativePtr = nCreateCanvasPropertyFloatAnimator( + new WeakReference<RenderNodeAnimator>(this), + property.getNativeContainer(), deltaType, deltaValue); + } + + public RenderNodeAnimator(CanvasProperty<Paint> property, int paintField, + int deltaType, float deltaValue) { + mNativePtr = nCreateCanvasPropertyPaintAnimator( + new WeakReference<RenderNodeAnimator>(this), + property.getNativeContainer(), paintField, deltaType, deltaValue); + } + public void start(View target) { mTarget = target.mRenderNode; mTarget.addAnimator(this); @@ -117,6 +136,10 @@ public final class RenderNodeAnimator { private static native long nCreateAnimator(WeakReference<RenderNodeAnimator> weakThis, int property, int deltaValueType, float deltaValue); + private static native long nCreateCanvasPropertyFloatAnimator(WeakReference<RenderNodeAnimator> weakThis, + long canvasProperty, int deltaValueType, float deltaValue); + private static native long nCreateCanvasPropertyPaintAnimator(WeakReference<RenderNodeAnimator> weakThis, + long canvasProperty, int paintField, int deltaValueType, float deltaValue); private static native void nSetDuration(long nativePtr, int duration); private static native void nUnref(long nativePtr); } |