我编写了这段代码,用于在堆栈中找到的多个示例中为绘图线设置动画:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new DrawLine(this));
}
private static class DrawLine extends View {
public DrawLine(Context context) {
super(context);
setFocusable(true);
}
private int startX = 0;
private int startY = 0;
private int endX = 0;
private int endY = 0;
private Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG) {
{
setDither(true);
setColor(Color.RED);
setStrokeWidth(40);
}
};
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawLine(startX, startY, endX, endY, paint);
if (endX != 300 && endY != 300) {
endY++;
endX++;
postInvalidateDelayed(0); //
}
}
}
}
我的问题是,如何在MainActivity xml中绘制这一行,而不是使用DrawLine类设置contentView?另外,有没有办法让线条画得更快?
谢谢!
答案 0 :(得分:1)
我认为这不起作用,因为endX和endY只增加一次。尝试提供直接值并检查它是否有效
答案 1 :(得分:0)
很抱歉,此代码在kotlin中。我不懂java。
var delay=0
var startX=0
var startY=0
var xgap=5
var ygap=5
for (i in 1..50){
delay+=3
handler.postDelayed(Runnable {
canvas.drawLine(
startX,
startY,
stopX,
stopY,
paint)
startX=stopX
startY=stopY
stopX+=xgap
stopY+=ygap
},delay)
你会明白的。每次增加延迟和位置 我已经在我的应用程序中完成了这项工作
编辑:您可以在Android studio本身将此代码转换为java