2012-11-28 115 views
0

下面是我在一個框架中創建了三個新視圖的程序。點擊兩個不同的視圖,我想在視圖之間畫一條線。我試圖弄清楚如何做到這一點......Android-在兩個視圖之間畫線

Ball ball1=new Ball(this,100,100,45); 
    Ball ball2=new Ball(this,400,100,45); 
    Ball ball3=new Ball(this,250,350,45); 
    FrameLayout frame1=(FrameLayout) findViewById(R.id.main_view); 
    frame1.addView(ball1); 
    frame1.addView(ball2); 
    frame1.addView(ball3); 

     frame1.setOnTouchListener(new View.OnTouchListener() { 
     public boolean onTouch(View v, MotionEvent event) { 
      switch(event.getAction()){ 
      case MotionEvent.ACTION_DOWN: { 
       float x = event.getX(); 
       float y = event.getY(); 
       System.out.println("x:"+x+"y:"+y); 
       if (x>55 && x<142 && y>55 && y<142) 
        { 
        System.out.println("working1 "+count); 
        Toast toast = Toast.makeText(getBaseContext(), "Works fine", Toast.LENGTH_SHORT); 
        toast.show(); 
       } 

回答

0

對於你的兩個視圖之間的畫線。

爲繪製線條的視圖創建類。

public class DrawView extends View { 
    Paint paint = new Paint(); 

    public DrawView(Context context) { 
     super(context); 
     paint.setColor(Color.BLACK); 
    } 

    @Override 
    public void onDraw(Canvas canvas) { 
      canvas.drawLine(0, 50, 350, 50, paint); 
    } 

} 

現在從您的活動中,您要在佈局中添加此行。 創建此類的對象並將此視圖添加到佈局中。

根據您的需求嘗試這樣。

DrawView drawView; drawView = new DrawView(this);

frame1.addView(ball1); 
          // add that view here 
frame1.addView(drawView); 
frame1.addView(ball2); 
          // same way here 
frame1.addView(ball3); 

欲瞭解更多詳細信息See Example

+0

謝謝。但我在這裏要做的是當我觸摸視圖說A和觸摸另一個視圖說B然後行必須從A畫到B. –

+0

比你可以嘗試這樣的觸摸視圖A get x,y座標該視圖,而不是在觸摸視圖B時獲取該視圖的x,y座標,並將該座標傳遞給drawLine()方法,並在您的佈局中添加該視圖,如上所述。 –

0

只是借鑑了一些條件的onDraw線(),並在onTouch您的活動()方法來設置這個條件。然後在您更改其狀態的視圖上調用invalidate。

相關問題