Android 以编程方式更改圆半径-画布
我希望每500毫秒以编程方式将圆半径从0更改为100,使其像一个闪烁的动画Android 以编程方式更改圆半径-画布,android,android-animation,android-canvas,android-custom-view,Android,Android Animation,Android Canvas,Android Custom View,我希望每500毫秒以编程方式将圆半径从0更改为100,使其像一个闪烁的动画 public void onAnimationUpdate(ValueAnimator animator) { float radius = (float)animator.getAnimatedValue(); // Clear canvas and draw next frame invalidateSelf(); } 基本上,我画了两个圆心相同,半径不同的圆。我想将动画应用到后面的圆
public void onAnimationUpdate(ValueAnimator animator) {
float radius = (float)animator.getAnimatedValue();
// Clear canvas and draw next frame
invalidateSelf();
}
基本上,我画了两个圆心相同,半径不同的圆。我想将动画应用到后面的圆上,其他圆的半径更大
如何通过编程将圆的半径从0更改为100,然后再更改为0?我在网上密集地搜索,没有结果
下面是我如何绘制这些cercles的:
private static final int STROKE_WIDTH = 20;
private Paint mInnerCircle, mOutterCircle;
private int centerX, centerY, radius;
public void init(){
mInnerCircle = new Paint(Paint.ANTI_ALIAS_FLAG);
mInnerCircle.setColor(Color.BLUE);
mInnerCircle.setStyle(Paint.Style.FILL);
mOutterCircle = new Paint(Paint.ANTI_ALIAS_FLAG);
mOutterCircle.setStyle(Paint.Style.STROKE);
mOutterCircle.setStrokeWidth(STROKE_WIDTH);
mOutterCircle.setColor(Color.parseColor("#33b5e5"));
}
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
centerX = canvas.getWidth()/ 2;
centerY = canvas.getHeight()/ 2;
radius = Math.min(centerX,centerY);
canvas.drawCircle(centerX, centerY, radius - STROKE_WIDTH / 2, mOutterCircle);
canvas.drawCircle(centerX, centerY, radius - STROKE_WIDTH, mInnerCircle);
}
最终结果应该是这样的:
到目前为止,我已经得到了静态圆:
非常感谢您的帮助。您的绘图设备可以实现以下界面: 此接口的实现者可以将自己添加为更新侦听器 发送到ValueAnimator实例以接收每个动画的回调 帧,在为该帧计算当前帧的值之后 价值动画师 然后重写onAnimationUpdate()方法以处理动画的每一帧
public void onAnimationUpdate(ValueAnimator animator) {
float radius = (float)animator.getAnimatedValue();
// Clear canvas and draw next frame
invalidateSelf();
}
然后在init()
方法中启动动画:
public void init() {
...
ValueAnimator valueAnimator = ValueAnimator.ofFloat(START_RADIUS, END_RADIUS);
valueAnimator.setDuration(DURATION_MILLIS)
valueAnimator.addUpdateListener(this);
valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
valueAnimator.start();
}
嘿,我很抱歉看到你删除了关于寻找包含其他彩色石头的路径的问题。有一种方法应该有效。是否要取消删除?问题再次打开。请看一下@Gene