2013-05-27 90 views
1

喷漆的对象上的触摸事件我画使用如下7个漆对象在我的Android应用程序在画布上的圆。相同的绘画对象可以使用多次绘制该圆形。获取安卓

现在我想显示触摸喷漆的对象,每个颜色,当用户触摸的颜色名称。

我该怎么做?对于同样喜欢上触摸事件

Circle using paint objects

回答

0

用途:

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; 
    } 
} 
+0

我没有使用'canvas.drawCircle()'绘制我的圈子。我为此使用'canvas.drawArc()'。与24弧的组合,画一个圆。 – Bishan

+0

好的,谢谢@Bishan –

0

您应该对所有色界的位置。 里面的onTouchEvent(),您可以比较每个颜色的圆圈和触摸位置与色界半径之间的距离。

如果距离小于半径(也许比最小值大,所以只有颜色是可触摸的,而不是内圆的空区域),你可以otbtain的角度,并确定选择的颜色这种方式。

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    switch (event.getAction()) { 
    case MotionEvent.ACTION_DOWN: 
     for (colorCircle c : allCircles) { 
      float distance = sqrt ((event.getX() - c.getX())^2 + 
       ((event.getY() - c.getY())^2); 
      if (distance < c.getRadius()) { 
       for (coloredPart cPart : c) { 
        if (event.getX() > (Math.cos(cPart.getMinAngle) * c.getRadius) 
         + c.getX() && 
         event.getX() < (Math.cos(cPart.getMaxAngle) * c.getRadius) 
         + c.getX() && 
         event.getY() > (Math.sin(cPart.getMinAngle) * c.getRadius) 
         + c.getY() && 
         event.getY() < (Math.sin(cPart.getMaxAngle) * c.getRadius) 
         + c.getY() &&) { 
         // cPart was touched 
        } 
       } 
      } 
     } 
    } 
    return true; 
}