0

ビュー拡張クラスのondrawで2つのビットマップを描画しました。ビットマップに触れると、2つの異なるアクティビティを開始したいと思います。たとえば、bitmap1をタッチすると、activity1が開始され、bitmap2をタッチすると、activity2が開始されます。つまり、Bitmap bimap1、bitmap2です。

protected void onDraw(Canvas canvas) 
    {

        Paint paint = new Paint(); 
        paint.setStyle(Paint.Style.FILL); 
        paint.setColor(Color.YELLOW);

            canvas.drawBitmap(bitmap2, 100, 100, paint);
                        canvas.drawBitmap(bitmap2, 200, 200, paint);




        super.onDraw(canvas);
    }
4

2 に答える 2

0

onClickより高度な抽象化であるため、そのためにイベントを使用することはできません。クリックされているかどうかにかかわらず、多くの情報はありません。そのためonTouchEvent、タップ/クリックが発生したかどうか、およびどこで発生したかを確認するには、 に移動してタッチ イベントを処理する必要があります。タッチ イベントはクライアント座標での位置を指定するため、それらは に対して相対的になり、(100,100)(200,200)描画するために使用していますCanvas。したがって、基本的には、タッチ イベントの位置を の情報と一致させることができますCanvas

または、実際のユースケースが例と同じくらい単純な場合は、Viewそれぞれが 1 つを保持し、それぞれにBitmap単純setOnClickListener()に 2 つの異なる を使用できます。2 つの を使用して、自分でビットマップ ドローアブルを使用する代わりに、 XMLから直接ビットマップ ドローアブルImageViewを参照できます。Draw

于 2013-01-01T12:12:26.120 に答える
0

onTouchビットマップにイベントを設定することはできません。2 つのオプションがあります。

1)2つの別々のビューで2つの別々のキャンバスを使用しonTouch、それらにイベントをバインドします。

また

2) ビットマップの座標を取得し、この座標から、選択されているビットマップを決定します。

例:(ヒントを得るために大まかなコードです)

if (x >= xOfYourBitmap && x < (xOfYourBitmap + yourBitmap.getWidth())
                && y >= yOfYourBitmap && y < (yOfYourBitmap + yourBitmap.getHeight())) {
        //you are inside your bitmap
} 
于 2013-01-01T12:17:03.327 に答える