2014-03-28 27 views
0

我知道我的可繪製線條不是對象,但有什麼方法可以將線條點擊。如何將eventlistener附加到我的可繪製線條

我不能使用視圖,因爲我會有太多的線條。提前致謝。

這是我的繪圖代碼。

public class Draw_can extends View { 
    Paint paint_obj; 
    public Draw_can(Context context) { 
     super(context); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     // TODO Auto-generated method stub 
     super.onDraw(canvas); 
     paint_obj = new Paint(); 
     draw_lines(canvas); 

    } 

    public void draw_lines(Canvas canvas) { 
     int width = 100; 
     paint_obj.setStrokeWidth(5); 
     paint_obj.setColor(Color.GRAY);  

     for (int j = 1; j < 8; j++) { 

      for (int i = 1; i <= 8; i++) { 
       canvas.drawLine(50*j, 50 * i, 50*j+50, 50 * i, paint_obj);        
      } 
     } 

     for (int j = 1; j < 8; j++) { 

      for (int i = 1; i <= 8; i++) { 
       canvas.drawLine(50 * i , 50*j, 50 * i , 50*j+50, paint_obj);     
      } 
     }    
    } 
} 

我該怎麼做?

回答

0

檢查這一點,我使用的onTouchEvent():

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    // TODO Auto-generated method stub 
    tx = event.getX(); 
    ty = event.getY(); 

    int action = event.getAction(); 
    switch(action){ 
     case MotionEvent.ACTION_DOWN: 
     tx = event.getX(); 
     ty = event.getY(); 



     //something like this 


     if(ty==line.y&&tx>=line.x&&tx<=line.x+line.width   
      break; 
     case MotionEvent.ACTION_MOVE: 
      tx = event.getX(); 
      ty = event.getY(); 
      break; 
     case MotionEvent.ACTION_UP: 
       // ammo.touchRelease(tx,ty); 
       break; 
     case MotionEvent.ACTION_CANCEL: 
       break; 
     case MotionEvent.ACTION_OUTSIDE: 
       break; 
     default: 
    } 
    return true; //processed 
} 
+0

感謝隊友!但我將有大約200行,所以它不會在我的情況下工作。我感謝你的努力:) –