Android OntouchListener,在绘制位图时检查图像相交

Android OntouchListener,在绘制位图时检查图像相交,android,canvas,drawable,Android,Canvas,Drawable,好的,伙计们,好吧…,看起来我从上一个问题开始就错了 我正在开发一个wordsearch游戏,我已经将应用程序实现的“视点”从GridView更改为在android中使用画布绘制位图 情况就是这样: 画布中有一个可绘制对象,另一个可绘制对象将在用户调用OntouchListener事件时绘制 我想做一个逻辑运算,这样如果第二个绘制对象与第一个可绘制对象具有相同的轴或顺序,它将做一些事情 代码如下: public class DrawView extends View implements OnT

好的,伙计们,好吧…,看起来我从上一个问题开始就错了

我正在开发一个wordsearch游戏,我已经将应用程序实现的“视点”从GridView更改为在android中使用画布绘制位图

情况就是这样: 画布中有一个可绘制对象,另一个可绘制对象将在用户调用OntouchListener事件时绘制

我想做一个逻辑运算,这样如果第二个绘制对象与第一个可绘制对象具有相同的轴或顺序,它将做一些事情

代码如下:

public class DrawView extends View implements OnTouchListener{
private static final String TAG = "DrawView";

List<Point> points = new ArrayList<Point>();
Paint paint = new Paint();
Bitmap kangoo = BitmapFactory.decodeResource(getResources(),R.drawable.icon);

public DrawView(Context context, AttributeSet attrs) {
    super(context,attrs);
    setFocusable(true);
    setFocusableInTouchMode(true);

    this.setOnTouchListener(this);
    paint.setColor(Color.WHITE);
    paint.setAntiAlias(true);
}

@Override
public void onDraw(Canvas canvas) {
    Bitmap krazy = BitmapFactory.decodeResource(getResources(),R.drawable.schema);
    canvas.drawBitmap(krazy, 130, 130, null);
    for (Point point : points) {
        canvas.drawBitmap(kangoo, point.x, point.y, null);
        //canvas.drawCircle(point.x, point.y, 5, paint);
        // Log.d(TAG, "Painting: "+point);
    }
}

@Override
public boolean onTouch(View view, MotionEvent event) {
     // if(event.getAction() != MotionEvent.ACTION_DOWN)
    // return super.onTouchEvent(event);
    Point point = new Point();
    point.x = event.getX();
    point.y = event.getY();
    points.add(point);
    invalidate();
    Log.d(TAG, "point: " + point);
    return true;
}
    }

    class Point {
    float x, y;

    @Override
     public String toString() {
       return x + ", " + y;
     }
    }
公共类DrawView扩展视图实现OnTouchListener{
私有静态最终字符串标记=“DrawView”;
列表点=新的ArrayList();
油漆=新油漆();
Bitmap kangoo=BitmapFactory.decodeResource(getResources(),R.drawable.icon);
公共绘图视图(上下文、属性集属性){
超级(上下文,attrs);
设置聚焦(真);
setFocusableInTouchMode(真);
this.setOnTouchListener(this);
油漆。设置颜色(颜色。白色);
paint.setAntiAlias(真);
}
@凌驾
公共空白onDraw(画布){
位图krazy=BitmapFactory.decodeResource(getResources(),R.drawable.schema);
drawBitmap(krazy,130,130,null);
用于(点:点){
drawBitmap(kangoo,point.x,point.y,null);
//画布.画圈(点x,点y,5,绘画);
//日志d(标签“涂漆:+点);
}
}
@凌驾
公共布尔onTouch(视图、运动事件){
//if(event.getAction()!=MotionEvent.ACTION\u向下)
//返回super.onTouchEvent(事件);
点=新点();
point.x=event.getX();
point.y=event.getY();
点。添加(点);
使无效();
日志d(标签,“点:”+点);
返回true;
}
}
类点{
浮动x,y;
@凌驾
公共字符串toString(){
返回x+“,”+y;
}
}
请看…,静态绘制对象是KRAZY和dynamic,在触摸屏时绘制对象是KANGOO

我想知道这两个物体是否通过x或y接触


谢谢你

实际上这个解决方案是用来帮助我的文字搜索游戏项目的

我需要做的主要事情是测量被占用的单词,这些单词由可画的字符串块表示。。。 然后将其与方形选择框生成的方形区域进行比较,只要用户触摸屏幕,方形选择框就会在字符块内绘制自身

然后在正方形区域或正方形选择的占用区域被整个字符块占用时调用。。。。 我的意思是方形选择框在字符块内


在这种情况下,如果一个单词从点.x=0.0,y=0.0开始创建4个字符块,并且每个字符块占用32pix H和W,那么方形选择框占用的位置必须小于4*32(W)和1*32(H)…

实际上,此解决方案用于帮助我的单词搜索游戏项目

我需要做的主要事情是测量被占用的单词,这些单词由可画的字符串块表示。。。 然后将其与方形选择框生成的方形区域进行比较,只要用户触摸屏幕,方形选择框就会在字符块内绘制自身

然后在正方形区域或正方形选择的占用区域被整个字符块占用时调用。。。。 我的意思是方形选择框在字符块内

在这种情况下,如果一个字从点.x=0.0,y=0.0开始生成4个字符块,并且每个字符块占用32pix H和W,则方形选择框占用的位置必须小于4*32(W)和1*32(H)