2013-01-01 57 views
0

我已經繪製了兩個位圖的擴展類的視圖的撤回。如果我觸摸任何位圖,我想開始兩個不同的活動。就像我觸摸bitmap1開始activity1一樣,在觸摸bitmap2時它開始activity2.here就是我所做的簡而言之, 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); 
    } 
+1

請接受答案如果它是有用的 –

回答

0

不能使用該onClick事件,由於其較高的抽象。你被點擊或沒有被點擊,你沒有太多的信息。因此,您將不得不深入到onTouchEvent並處理觸摸事件以查看是否發生輕擊/點擊,以及它發生在何處。觸摸事件指定其在客戶端座標中的位置,因此它們將與您用於繪製Canvas(100,100)(200,200)相關。所以基本上,您可以將觸摸事件的位置與您的Canvas中的信息相匹配。或者,如果您的實際使用案例與您的示例一樣簡單,則可以使用兩個不同的View,每個都持有一個Bitmap,並且每個都只有setOnClickListener()。您可以使用兩個ImageView S和直接從XML而不是Draw引用位圖資源自己荷蘭國際集團他們。

+0

可以請您給一點解釋如何搭配觸摸事件位置imformation? – LKY

+0

@你好:你可以通過使用'getX()'和'getY()'來獲得觸摸位置,看看點是否在你的位圖的矩形內 –

+0

好吧,我在試謝謝。 – LKY

0

您不能在位圖上設置onTouch事件。你現在有兩個選擇。

1)用戶兩個單獨的畫布在兩個單獨的視圖,並綁定onTouch事件對他們。

OR

2)讓您的位圖的座標,從該座標,決定選擇哪個位圖。

對於例如:(只是一個粗略的代碼有一些提示)

if (x >= xOfYourBitmap && x < (xOfYourBitmap + yourBitmap.getWidth()) 
       && y >= yOfYourBitmap && y < (yOfYourBitmap + yourBitmap.getHeight())) { 
     //you are inside your bitmap 
} 
+0

'onTouchEvent'是'View'的方法,而不是'Canvas' –

+0

Thanx先生,答案更新。 –