2011-10-20 18 views
2

私はアンドロイド開発で新しいです。特に画像のonTouchEventを設定したかったのです。ここでキャンバスを使用してビットマップイメージでonTouchEventを設定する方法。

....私は増加のスコアなどのようないくつかの作業を行うことができるように、私が試したのサンプルコードは

@Override 
protected void onDraw(Canvas canvas) 
{ 
      canvas.drawBitmap(image1, random.nextInt(455), random.nextInt(270), paint); 
      canvas.drawText("SCORE = "+score, 10, 20, paint); 
    } 

    @Override 
public boolean onTouchEvent(MotionEvent event) 
{ 
    // TODO Auto-generated method stub 

    if(toggelFlag) 
    { 
     score = score+10; 

    } 

    return super.onTouchEvent(event); 

} 

は実際に私が唯一の画像に触れた後、スコアを上げるたかった...です。しかし、ここで画面のどこに触れてもスコアが上がります。私はイメージのためだけにそれをしたい。

答えて

4

このような画像の境界を持つ領域オブジェクトを作成する:

Region region = new Region(left, top, right, bottom); 

左、上、右と下部には、画像の境界を画定します。

次に、タッチイベントを処理するときに、領域にイベント位置が含まれているかどうかを確認します。次のようになります。

public boolean onTouchEvent(MotionEvent event) 
{ 
    float x = event.getX(); 
    float y = event.getY(); 

    if(region.contains((int)x, (int)y)) 
    { 
     // touch in image 
    } 

    return super.onTouchEvent(event); 
} 
+0

ありがとうございます。 – KKC

+0

ようこそ。私が助けてくれたら、私の応答を有効とマークする必要があります;) – vicentazo

+0

ありがとうございました。私は左、上、右、下の値を与える方法が得られていません。適切に – KKC

0

のLinearLayoutに

1.Take ... ImageViewのに... 設定onTouchリスナーを、このいずれかを試してみて、この

linear.addView(new CustomImage(this)); 
     linear.setOnTouchListener(new View.OnTouchListener() { 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       // TODO Auto-generated method stub 
       return true; 
      } 
     }); 

よう2.CustomImage extensビューを子を追加、あなたのonDrawメソッドがありますこのクラスでは、このようにする必要があります。

private CustomImage extends View 
    { 
     @Override 
    protected void onDraw(Canvas canvas) 
    { 
      canvas.drawBitmap(image1, random.nextInt(455), random.nextInt(270), paint); 
      canvas.drawText("SCORE = "+score, 10, 20, paint); 
    } 
関連する問題