2012-10-31 8 views
0

화면에 Touch 이벤트가있는 원을 그리는 앱을 만들고 있습니다. 다음 코드는 잘 작동 :캔버스와 이벤트 TOCH로 이미지에 원 그리기

Class Punto extends view{ 
    Paint paint; 
    Point point = new Point(); 

Public Punto(Context contex){ 
super(context); 
} 

@Override 
protected void onDraw(Canvas canvas){ 
      super.onDraw(canvas);    
      paint.setColor(Color.BLUE); 
      canvas.drawCircle(point.x,point.y,10,paint); 
      } 

@Override 
public boolean onTouchEvent (MotionEvent event) { 
     switch (event.getAction()) { 
      case MotionEvent.ACTION_DOWN : 
       point.x = event.getX(); 
       point.y = event.getY(); 
       break; 
     } 
     return true; 
    } 

class Point{ 
    float x,y; 
} 

활동 :

public class Pintar extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Punto punto = new Punto(this); 
    setContentView(punto); 
} 

그러나 나는 원이 그림에 그려진 것이 필요 (내 경우는 시장의 비행기입니다에)하지만 난 방법을 모르는 할 수 있어요.

+0

모습을. 획 및 채우기에 대한 옵션이 있어야합니다 (또는 원하는 경우에만 채우기). – Chris

답변

0

간단하게 이미지 뷰를 확장 :

class Punto extends ImageView { 

는 미안, 나는 가정하고있어 당신이 컴파일 게시 된 코드 ...

이 시도하는 것이 :

public class TouchImage extends ImageView { 
    Paint paint = new Paint(); 
    Point point = new Point(); 

    public TouchImage(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     paint.setColor(Color.BLUE); 
    } 

    protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 
     canvas.drawCircle(point.x, point.y, 10, paint); 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      point.x = event.getX(); 
      point.y = event.getY(); 
      invalidate(); 
     } 
     return true; 
    } 

    class Point { 
     float x, y; 
    } 
} 

으로 다음과 같은 레이아웃 :

,210

그리고 TouchImage 터치시 좌표를 가로채는 작업 : 페인트 객체에 대한 옵션에서

public class Example extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     TouchImage touchImage = (TouchImage) findViewById(R.id.touchImage); 
     touchImage.setOnTouchListener(new OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       // Call the existing onTouchEvent() in TouchImage, 
       // if it draws a circle fetch the coordinates 
       if(v.onTouchEvent(event)) { 
        // Do something with event.getX(), event.getY() 
       } 
       return true; 
      } 
     }); 
    } 
}