Подтвердить что ты не робот

Как запускать событие, когда кто-то щелкает в любом месте экрана в приложении для Android?

как я могу поймать событие, когда щелчок происходит где-то на экране приложения? Неважно, есть ли кнопка или что-то еще. Мне просто нужно применить прослушиватель событий onClick() на экране всего приложения.

Как это сделать?

4b9b3361

Ответ 1

setonclicklistner для основного макета вашего файла макета....

Как.... main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/mainlayout">
 <!- Your other view->
</Relativelayout>

и установите функцию прослушивания кликов для mainlayout...

 RelativeLayout rlayout = (RelativeLayout) findViewById(R.id.mainlayout);
 rlayout.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {

    }

 });

Ответ 2

Дайте основной макет идентификатору, затем

LinearLayout root = (LinearLayout) findViewById(R.id.main_layout);
root.setOnClickListener(new OnClickListener() {
    public void onClick()
    {

    }
});

Ответ 3

Возможно, вы можете добавить слушателя к экземпляру макета, получив макет с помощью

RelativeLayout l = (RelativeLayout)findViewById(R.id.mylayout);
l.setOnClickListener(click);

Ответ 4

Вы также можете напрямую установить обратный вызов из атрибута onClick xml корневого макета:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:onClick"myMethod">
 <!- Your other view->
</Relativelayout>

И в вашей деятельности:

public void myMethod(View pView) {
  //XXX do something
}

Менее раздутый код:)

Ответ 5

Я считаю, что самый простой способ - переопределить onUserInteraction в Activity

Просто имейте в виду, что он не срабатывает, когда пользователи фокусируются вкл/выкл EditText и Spinners (возможно, другие виджеты тоже). Но он срабатывает каждый раз, когда пользователь прикасается к экрану или нажимает кнопку.

Но это делает ненужным создавать слушателей в ваших макетах или писать дополнительные методы для обработки этих слушателей, поэтому я считаю, что это самый безотказный способ получить то, что вы хотите.