喷漆的对象上的触摸事件我画使用如下7个漆对象在我的Android应用程序在画布上的圆。相同的绘画对象可以使用多次绘制该圆形。获取安卓
现在我想显示触摸喷漆的对象,每个颜色,当用户触摸的颜色名称。
我该怎么做?对于同样喜欢上触摸事件
喷漆的对象上的触摸事件我画使用如下7个漆对象在我的Android应用程序在画布上的圆。相同的绘画对象可以使用多次绘制该圆形。获取安卓
现在我想显示触摸喷漆的对象,每个颜色,当用户触摸的颜色名称。
我该怎么做?对于同样喜欢上触摸事件
用途:
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;
}
}
您应该对所有色界的位置。 里面的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;
}
我没有使用'canvas.drawCircle()'绘制我的圈子。我为此使用'canvas.drawArc()'。与24弧的组合,画一个圆。 – Bishan
好的,谢谢@Bishan –