好的,所以我一直试图这样做几天,我没有在哪里。所以我有以下两个图像:
First是RPM Gauge
第二张图片是一张全白图,表示rpm表已满:
我想做以下事情:
我有用户输入工作,我需要动画的帮助。这是我尝试过的:
我知道这可能是一种更简单或更有效的方法,我只是没有线索。任何有好主意的人?
*注意所有图像都是PNG的
提前致谢!
答案 0 :(得分:9)
正如您已经发现的那样,我会使用剪辑:
我会用
Canvas.clipPath()
路径看起来像是从圆心开始的饼图片,如下所示:
要创建剪辑路径,请使用以下内容:
public class PieView extends View {
private int width = 200;
private int angleStart = 135;
private int sweep = 270;
private Path p;
private Paint paint = new Paint();
public PieView(Context context, AttributeSet attrs) {
super(context, attrs);
p = new Path();
//move into center of the circle
p.setLastPoint(width/2, width/2);
//add line from the center to arc at specified angle
p.lineTo(width/2+(float)Math.cos(Math.toRadians(angleStart))*(width/2),
width/2+(float)Math.sin(Math.toRadians(angleStart))*(width/2));
//add arc from start angle with specified sweep
p.addArc(new RectF(0, 0, width, width), angleStart, sweep);
//from end of arc return to the center of circle
p.lineTo(width/2, width/2);
paint.setColor(Color.RED);
paint.setStrokeWidth(1);
paint.setStyle(Style.STROKE);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawRect(0,0,width,width, paint);
canvas.drawPath(p,paint);
}
}
答案 1 :(得分:1)
这是从Android ApiDemos中绘制弧线的方法:http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Arcs.html
然后,您需要使用xfermode通过使用从位图派生的画布来移除顶部图像的一部分。您可以在此处查看此方法的一个示例:Make certain area of bitmap transparent on touch