如何知道正在触摸哪个视图

时间:2012-02-16 10:57:12

标签: android android-layout view

我正在尝试建立一个乒乓球比赛,球拍显示在屏幕的底部,砖块在顶部。我使用三个视图,一个用于球拍,一个用于球,另一个用于绘制两个视图(球和球)的主视图:

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

我想知道的是,如果我能确定哪个视图被完全触及,我会尝试在主活动中使用onTouchEvent

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

但问题是,无论我在屏幕上的哪个位置触摸,桨都在移动,我想,只有当我触摸桨时,他才会移动。 那么,如果可能的话,我怎么能这样做呢? 感谢。

2 个答案:

答案 0 :(得分:2)

你可以通过另一种方式实现这一点,只需绘制两个相对布局蓝色和黄色,就像你的情况一样,并将它作为一个可点击的相对布局:从xml得到true并处理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;
                   }
               }

答案 1 :(得分:0)

Android的OnTouch事件已经有一个View类型参数,您可以使用该参数识别触发事件的视图。您可以找到示例here