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;
}
}