2012-11-28 51 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。

相关问题