几个视图上的onTouchListener

时间:2012-11-28 16:20:49

标签: android

我的问题是我想尝试在屏幕上的任何地方接收任何触摸。 要做到这一点,我想要的是创建一个主要“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的监听器,我想知道是否有办法接收用户触摸屏幕的事件。

非常感谢!

2 个答案:

答案 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);