2012-02-16 74 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; 
        } 
       } 
相关问题