2011-10-20 69 views
2

我是android開發新手。我想特別爲圖片設置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 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

非常感謝你much.its工作..但我沒有得到如何給左,頂,右和底部的值定義圖像邊界..正確 – KKC

0

試試這個... 設置onTouch監聽到的ImageView ...

Lee。接受的LinearLayout和添加子這樣

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); 
    }