我的问题是我想尝试在屏幕上的任何地方接收任何触摸。 要做到这一点,我想要的是创建一个主要“RelativeLayout”的布局。该活动实现了“onTouchListener”。这是我的布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relative"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:src="@drawable/ic_launcher" /></RelativeLayout>
这是我的活动代码:
public class MainActivity extends Activity implements OnTouchListener{
private Context context = null;
private ImageView imagen = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context = this;
setContentView(R.layout.activity_main);
imagen = (ImageView)findViewById(R.id.imageView1);
imagen.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
RelativeLayout relative = (RelativeLayout)findViewById(R.id.relative);
relative.setOnTouchListener(this);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
Toast.makeText(context, "Touch!!", Toast.LENGTH_SHORT).show();
return false;
}
重点是,如果我触摸图像,它不会显示吐司(如果您在屏幕上的任何位置触摸,我想要显示祝酒词。)
任何人都知道如何在我的活动中接触触摸屏幕的事件(无论它在哪里?)。
编辑:我想要的不是ImageView的监听器,我想知道是否有办法接收用户触摸屏幕的事件。
非常感谢!
答案 0 :(得分:1)
由于您的ImageView是可点击的,因此触摸事件将被分派到ImageView,而Activity无法接收它。
如果您想在调度查看之前拦截所有触摸事件,则应覆盖Activity.dispatchTouchEvent(MotionEvent ev)
。
public boolean dispatchTouchEvent(MotionEvent ev) {
// add your code here
return super.dispatchTouchEvent(ev);
}
答案 1 :(得分:0)
尝试将触控侦听器添加到图像中,而不是主要的相对布局。
imagen.setOnTouchListener(this);