如何在Activity中绘制这一行?

时间:2018-03-29 16:23:27

标签: android

我编写了这段代码,用于在堆栈中找到的多个示例中为绘图线设置动画:

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?另外,有没有办法让线条画得更快?

谢谢!

2 个答案:

答案 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