0

DrawRect メソッドを使用して屋内マップを描画しています。ユーザーの OnTouch イベントで各四角形を識別したいのですが、どうすれば実現できますか?

描画された Rectangles を、それらを一意に識別できる独立したオブジェクトとして使用できるかどうかを知りたいです。

更新しました

これを試しました。しかし、それは私にエラーを与えます.forループで新しいインテントを作成するにはどうすればよいですか?? :(

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 メソッド本体

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

3 に答える 3

1

キャンバスは、あなたが描いた形を覚えていません。それらを別々に追跡する必要があります。リスト (またはその他のデータ構造) に Rect オブジェクト (「モデル」オブジェクト)、または四角形の座標、寸法、必要なものを保持するその他のカスタム オブジェクトを入力し、タッチの座標がこれらの長方形の中にあります。contains(int x, int y)Android の Rect のEG メソッドが役立ちます。draw メソッドでは、これらのオブジェクトも使用します。

于 2012-08-19T12:47:10.077 に答える
0

この質問はしばらく前に出されたことに気づきましたが、更新された質問に気付きました...

あなたが抱えている問題は、実際にはViewクラスから「startActivity」を実行しようとしていると思います。

まず、アクティビティ クラスに新しい static void を作成すると、

public static void Rectclicked(Context c) {
        Intent inte = new Intent(c, SecondActivity.class);
        c.startActivity(inte);
    }

次にViewクラスに戻り、TouchEventで、長方形がクリックされた場合にこれをforループに追加します

MainActivity.Rectclicked(getContext());
于 2013-01-24T16:10:41.847 に答える