2015-04-04 52 views
0

我需要畫一條從A點(x1,y1)到B點(x2,y2)的直線。但是我不需要顯示這條線,而是需要看到這條線實際上是以一種可控的速度一點一點地繪製出來的,從A點到B點。我嘗試過使用警報和循環,但無法找到我的解決方案我正在研究表面視圖。請給這個如何在android中動畫線?

+0

,劃清界線越來越大,直至充滿整個所需的長度。 aka,從A的一行,到B的一部分,然後再到B,等等等等。 – Doomsknight 2015-04-04 12:55:41

回答

3

解U可以做到這一點是這樣的:在一個循環中

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); 
     } 
    }; 

    @Override 
    protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 

     canvas.drawLine(startX, startY, endX, endY, paint); 

     if (endX != 300 && endY != 300) { // set end points 
      endY++; 
      endX++; 

      postInvalidateDelayed(15); // set time here 
     } 
    } 
+0

非常感謝你。它的工作:) – Awais 2015-04-04 18:27:43

+0

Ca請你解釋一下postInvalidateDelayed(delay)如何。作品? – Awais 2015-04-05 06:47:10

+0

是的。方法invalidate()和postInvalidate()調用draw()方法立即讀取視圖。所以postInvalidateDelayed(延遲)延遲工作,所以這看起來像動畫。 – GIGAMOLE 2015-04-05 09:14:21