Android,沿着path移动位图?

我想知道是否有可能从一个path中select坐标来绘制一段时间的位图,例如,我有一个太阳的图像,我想随着时间的推移,沿着弧线path。

有没有什么办法来定义这样的path,然后沿着它移动,这样我就不用计算它呢?

谢谢。

我正在考虑一个解决scheme:

_ / \ 

如果你的弧具有这种形状(意思是不到半个圆,并且是水平放置的),那么你可以迭代x值,并且获得path上的y。 然后将你的位图移动到那个位置。

是的,可以沿着path移动图像。 我将提供简单的解决scheme来展示原理。 以下代码将移动并旋转图像。 如果您不需要旋转,请删除TANGENT_MATRIX_FLAG标志。

 import android.graphics.*; //somewhere global int iCurStep = 0;// current step //don't forget to initialize Path pathMoveAlong = new Path(); private static Bitmap bmImage = null; @Override protected void onDraw(Canvas canvas) { Matrix mxTransform = new Matrix(); PathMeasure pm = new PathMeasure(pathMoveAlong, false); float fSegmentLen = pm.getLength() / 20;//20 animation steps if (iCurStep <= 20) { pm.getMatrix(fSegmentLen * iCurStep, mxTransform, PathMeasure.POSITION_MATRIX_FLAG + PathMeasure.TANGENT_MATRIX_FLAG); canvas.drawBitmap(bmImage, mxTransform, null); iCurStep++; invalidate(); } else { iCurStep = 0; }; }; 

这里是我使用的animation师:

目的:沿path移动视图“视图”path“

V21 +:

 ValueAnimator pathAnimator = ObjectAnimator.ofFloat(view, "x", "y", path) 

V11 +:

 ValueAnimator pathAnimator = ValueAnimator.ofFloat(0.0f, 1.0f); pathAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { float[] point = new float[2]; @Override public void onAnimationUpdate(ValueAnimator animation) { float val = animation.getAnimatedFraction(); PathMeasure pathMeasure = new PathMeasure(path, true); pathMeasure.getPosTan(pathMeasure.getLength() * val, point, null); view.setX(point[0]); view.setY(point[1]); } }); 

类似的要求: https : //stackoverflow.com/a/30254715/4344057