2012-02-16 28 views
0

我正在嘗試構建一個乒乓遊戲,該屏幕顯示在屏幕底部,並且磚塊位於頂部。我用三個觀點,一個是槳,一個球,另外一個,就是畫了兩個視圖(球和槳)主要觀點:如何知道正在觸摸哪個視圖

public void draw(Canvas canvas){ 
    BallView.draw(canvas); 
    PaddleView.draw(canvas); 
} 

我想知道的是,如果我能識別被觸摸其觀點正好,我嘗試在主要活動與onTouchEvent做到這一點:

@Override 
    public boolean onTouchEvent(MotionEvent event){ 
     Log.d("touched", "touched") 
     return true; 
    } 

但是,問題是,不管我在哪裏觸摸屏幕上,槳移動,我想,只有當我觸摸槳時,他纔會移動。那麼,如果有可能,我該如何做到這一點? 謝謝。

+0

給出兩種觀點不同的ID ....私人OnTouchListener tListener1 =新OnTouchListener(){ 公共布爾onTouch(視圖V,MotionEvent事件)不是簡單地做,如果(v.getId == R.id。藍色){}否則如果(v.getId == R.id.yellow){}我希望這會起作用。 – 2012-02-16 11:18:58

+0

@pakshaheen我可以從java文件設置ID嗎?因爲我沒有任何XML文件。 – 2012-02-16 11:27:40

+0

是的,你可以做例如ScrollView view = new ScrollView(this); \t \t view.setId(2); – 2012-02-16 12:00:02

回答

0

Android的OnTouch事件已經有一個View類型參數,您可以用它來識別觸發事件的視圖。你可以找到一個例子here

2

你可以用另一種方式實現這一點,就像在你的情況下繪製兩個相同的藍色和黃色相同的佈局,並將其作爲可點擊的相對佈局:true從xml處理onClick:「onClickHandler」。希望這會對你有用。

   <RelativeLayout 
        android:id="@+id/rl_click_blue" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignParentLeft="true" 
        android:layout_alignParentRight="true" 
        android:background="#ffffff" 
        android:clickable="true" 
        android:onClick="onClickHandler"> 
       </RelativeLayout> 

       <RelativeLayout 
        android:id="@+id/rl_click_yellow" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignParentLeft="true" 
        android:layout_alignParentRight="true" 
        android:background="#ffffff" 
        android:clickable="true" 
        android:onClick="onClickHandler"> 
       </RelativeLayout> 

       // Handle your functionality here. 
       public void onClickHandler(View v) 
       { 
        switch (v.getId()) { 
         case R.id.rl_click_blue: 
          break; 

         case R.id.rl_click_yellow: 

          break; 
        } 
       } 
相關問題