我有一个扩展相对布局的自定义视图。在dispatchDraw方法中,我在for循环内绘制线和图像,因为我对多条线有不同的起点和终点。 我想知道最简单的方法,例如,以缓慢的方式从点a到点b绘制带有动画的线,该动画只能设置为我决定的线,而不能设置为所有其他线。 我也想用动画来绘制图像,但我不想移动图像,但是我想先将图像绘制得更大一点,然后将其缩小到合适的大小,或者从上到下绘制图像。同样,必须只为我决定的图像设置此动画,而不能为所有其他图像设置。
@Override
protected void dispatchDraw(Canvas canvas) {
int width = getWidth();
int height = getHeight();
super.dispatchDraw(canvas);
size = width / (lines);
insideMargin = size / margin;
vMargin = (height - lines * size) / 2f;
canvas.translate(0,vMargin);
for(int x=0; x<lines;x++){
for(int y=0;y<lines;y++){
if(/*a condintion is true*/) {
//draw line with animation, how to do it?
}else{
canvas.drawLine(x * size,
y * size,
(x + 1) * size,
y* size,
paint
);
}
if(/*a condition is true*/) {
//draw bitmap with animation, how to do it?
}else
canvas.drawBitmap(image, src, dest, null);
}
}
}
//i have on touch event that will call invalidate
答案 0 :(得分:0)
我认为您应该使用ValueAnimator
来达到目的。据我了解,一旦发生触摸事件,您就希望对值进行动画处理。动画师返回的值必须用于所有对象,因此动画值应尽可能通用。我建议使用0到1作为浮点值。您可以将此值用于动画。对于位图动画,可以定义目标矩形的开始和结束大小,然后通过促进动画分数值来找到合适的大小。对于线性情况,可以将斜率用于动画。我认为您已经有了直线的起点和终点,因此可以使用斜率和分数来计算动画终点。