Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何知道触动了哪个视图_Android_Android Layout_View - Fatal编程技术网

Android 如何知道触动了哪个视图

Android 如何知道触动了哪个视图,android,android-layout,view,Android,Android Layout,View,我正在尝试制作一个乒乓球游戏,在屏幕底部显示球拍,在顶部显示砖块。我使用三个视图,一个用于划桨,一个用于球,另一个是绘制两个视图(球和划桨)的主视图: 我想知道的是,如果我能准确地识别正在触摸的视图,我会尝试在主活动中使用onTouchEvent: @Override public boolean onTouchEvent(MotionEvent event){ Log.d("touched", "touched") return true;

我正在尝试制作一个乒乓球游戏,在屏幕底部显示球拍,在顶部显示砖块。我使用三个视图,一个用于划桨,一个用于球,另一个是绘制两个视图(球和划桨)的主视图:

我想知道的是,如果我能准确地识别正在触摸的视图,我会尝试在主活动中使用
onTouchEvent

   @Override
    public boolean onTouchEvent(MotionEvent event){
        Log.d("touched", "touched")
        return true;
    }
但是,问题是,无论我在屏幕上触摸到哪里,桨都在移动,我希望,只有当我触摸桨时,他才会移动。 那么,如果可能的话,我该怎么做呢?
谢谢。

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

您可以通过另一种方式实现这一点,例如,只需绘制两个与您的案例相同的蓝色和黄色相对布局,并从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;
                   }
               }

//在这里处理您的功能。
公共void onClickHandler(视图v)
{
开关(v.getId()){
案例R.id.rl\u点击蓝色:
打破
案例R.id.rl\u单击黄色:
打破
}
}

为两个视图提供不同的id。。。。private OnTouchListener tListener1=新建OnTouchListener(){public boolean onTouch(视图v,运动事件事件),而不是简单地在以下情况下执行(v.getId==R.id.blue){}否则在(v.getId==R.id.yellow){}我希望这能起作用。@pakshaheen我能从java文件中设置Id吗?因为我没有任何XML文件。是的,你可以这样做,例如ScrollView view=new ScrollView(this);view.setId(2);@pakshaheen谢谢,但问题是从来没有调用过OnTouchListener。。。
                <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;
                   }
               }