如何创建可点击的矩形? [英] How to create Clickable Rectangles?

查看:157
本文介绍了如何创建可点击的矩形?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

林绘图使用drawRect方法的室内地图。我想通过用户的OnTouch Event.How识别每个矩形我可以做到这一点?

我想知道如果我可以用绘制矩形作为独立的对象,在那里我可以识别它们独特的。

更新时间:

这个我试过。但它给了我,我errors.How可以创建一个新的意图withing for循环? (

 的ArrayList<矩形>矩形=新的ArrayList<矩形>();
 {rectangles.add(新矩形(232,78,419,238));
 rectangles.add(新矩形(285,27,524,239));
 rectangles.add(新矩形(418,79,524,239));
 rectangles.add(新矩形(181,79,233,215));
 rectangles.add(新矩形(232237524315));} 字符串Selected_rect = NULL;
公共布尔onTouchEvent(MotionEvent事件){
INT touchX =(int)的event.getX();
INT敏感=(int)的event.getY();
开关(event.getAction()){案例MotionEvent.ACTION_DOWN:
        的System.out.println(接触下来!);
        的for(int i = 0; I< rectangles.size();我++){                如果(rectangles.get(I)。载有(touchX,敏感)){
                    的System.out.println(感动矩形,开始活动。);
                    rectangles.get(ⅰ).describeContents();
                    Selected_rect =将String.valueOf(rectangles.get(I));
                                       }
//意图INTE =新意图(android.intent.action.DetectBlock);
// startActivity(INTE);
            }        打破;
案例MotionEvent.ACTION_UP:
        的System.out.println(接触了!);
        打破;
案例MotionEvent.ACTION_MOVE:
        的System.out.println(在屏幕上左右滑动手指。);
        打破;
}
  返回true;
}

我的意图方法身体

 私人无效startActivity(意向INTE){
    // TODO自动生成方法存根
     startActivity(INTE);
}


解决方案

画布不会记得你就可以绘制形状。你必须保持他们的跟踪separatedly。你应该填充矩形对象(模特的物体),或其它自定义对象持有的坐标,尺寸和任何你所需要的矩形,一个列表(或其它数据结构),并检查触摸触控如果坐标是任何这些矩形的内部。例如。方法为contains(int x,int y)对 Android的矩形将帮助。在你的画法,你也然后使用这些对象。

Im drawing an indoor map using DrawRect method. I want to identify each rectangle by the user's OnTouch Event.How can i make it happen?

I want to know if i can use the drawn Rectangles as independent objects Where i can identify them uniquely.

UPDATED

I tried this. But it gives me errors.How can i create a new intent withing the for loop?? :(

ArrayList<Rect> rectangles = new ArrayList<Rect>();
 {rectangles.add(new Rect(232,78,419,238));
 rectangles.add(new Rect(285,27,524,239));
 rectangles.add(new Rect(418,79,524,239));
 rectangles.add(new Rect(181,79,233,215));
 rectangles.add(new Rect(232,237,524,315));}

 String Selected_rect = null;


public boolean onTouchEvent(MotionEvent event) {
int touchX = (int) event.getX();
int touchY = (int) event.getY();
switch(event.getAction()){

case MotionEvent.ACTION_DOWN:
        System.out.println("Touching down!");
        for(int i =0; i< rectangles.size();i++){

                if(rectangles.get(i).contains(touchX,touchY)){
                    System.out.println("Touched Rectangle, start activity.");
                    rectangles.get(i).describeContents ();
                    Selected_rect = String.valueOf(rectangles.get(i));
                                       }
//                    Intent inte = new Intent("android.intent.action.DetectBlock");
//                    startActivity(inte);
            }

        break;
case MotionEvent.ACTION_UP:
        System.out.println("Touching up!");
        break;
case MotionEvent.ACTION_MOVE:
        System.out.println("Sliding your finger around on the screen.");
        break;
}
  return true;
}

My Intent method body

private void startActivity(Intent inte) {
    // TODO Auto-generated method stub
     startActivity(inte);
}

解决方案

The canvas will not remember about the shapes you draw on it. You have to keep track of them separatedly. You should fill a list (or some other data structure) with Rect objects ("model" objects), or other custom objects holding the coordinates, dimensions and whatever you need, of the rectangles, and check on touch if the coordinates of the touch are inside of any of these rectangles. E.G. method contains(int x, int y) of Android's Rect will help. In your draw method you then use also these objects.

这篇关于如何创建可点击的矩形?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆