0

我的问题是我想尝试在屏幕上的任何地方接收 ANY TOUCH。为此,我想创建一个带有主要“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 的侦听器,我想知道是否有办法接收用户触摸屏幕的事件,无论它在那里。

非常感谢!

4

2 回答 2

1

由于您的 ImageView 是可点击的,因此触摸事件将被分派到 ImageView 并且 Activity 无法接收它。如果您想在发送到视图之前拦截所有触摸事件,您应该覆盖Activity.dispatchTouchEvent(MotionEvent ev).

public boolean dispatchTouchEvent(MotionEvent ev) {
    // add your code here
    return super.dispatchTouchEvent(ev);
}
于 2012-11-28T16:37:29.743 回答
0

尝试将触摸侦听器添加到您的图像而不是主要的相对布局。

imagen.setOnTouchListener(this);
于 2012-11-28T16:24:35.200 回答