0

タッチイベントが発生するとすぐに、タッチの位置で ImageView 内に円を描画しようとしています。ImageView 内の Android - Canvas drawLineを含むいくつかの例を作成しました。私の問題は、円が約表示されていることです。タッチポイントより117px下。マイコード -

public boolean onTouchEvent(MotionEvent event){
        Canvas c;
        Paint p;
        ImageView v;
        Bitmap bm;

    v = (ImageView)findViewById(R.id.image1);
    bm = Bitmap.createBitmap(v.getWidth(),v.getHeight(),Config.ARGB_8888);
    c = new Canvas(bm);
    p = new Paint();        
    p.setColor(Color.GREEN);        
    float x = event.getX(); float y = event.getY();
    c.drawCircle(x, y, 20, p);      

    v.setImageBitmap(bm);

    return true;
}

AVD のスクリーン ショットを次に示します (実際のデバイスでもテストしました)。何がうまくいかないのか、どの基本的な事実が欠けているのかわかりません。助けてください。

4

1 に答える 1

2

アクティビティの onTouchEvent をオーバーライドしているように見えますか? その場合、位置は画像ビューではなくビューに相対的になります。画像ビューの位置を考慮し、それに応じて変換する必要があります。

int relPosX = event.getX() - getLeft();
int relPoxY = event.getY() - getTop();
于 2013-02-27T21:46:01.163 に答える