Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Star2016
5 / 5 / 0
Регистрация: 26.07.2016
Сообщений: 233
#1

OnClick для всего экрана

22.08.2016, 09:05. Просмотров 813. Ответов 9
Метки нет (Все метки)

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

Java
1
2
3
4
  public void onClick(View view)
    {
        //должно выполняться
    }
вставлять это во все onClik всех компонентов в программе не вариант. Как можно решить проблему?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2016, 09:05
Ответы с готовыми решениями:

Программное создание обработчика события OnClick для button
Иметься кнопка, которая создается самим пользователем Код создания кнопки:...

Кастомный шрифт для всего приложения
подскажите лучший способ использовать кастомный шрифт для всего приложения.

Одно окно Actvity для всего
Экран приложения состоит из трех элементов: Текста, кнопки Да и кнопки Нет. В...

Кастомный шрифт для всего приложения android eclipse
Как можно применить один шрифт для всего приложения полностью, включая не...

Как лучше всего хранить данные для приложения?
Допустим есть статический массив интов,или булов.Как его сохранять(onDestroy())...

9
vxg
Модератор
3246 / 2047 / 322
Регистрация: 13.01.2012
Сообщений: 7,926
22.08.2016, 09:28 #2
Star2016, положить сверху прозрачный кликовосприимчивый контрол
0
Star2016
5 / 5 / 0
Регистрация: 26.07.2016
Сообщений: 233
22.08.2016, 09:36  [ТС] #3
Думал в направлении прозрачный Layout но я не буду терять клик по кнопкам? То есть этот прозрачный Layout не перекроет весь интерфейс заблокировав его?
0
vxg
Модератор
3246 / 2047 / 322
Регистрация: 13.01.2012
Сообщений: 7,926
22.08.2016, 09:59 #4
Star2016, перекроет. а разве не этого вы хотите? разве не это означает фраза "при касании экрана в любом месте"?

Добавлено через 58 секунд
пока программа работает в нормальном режиме прозрачный слой можно просто сделать невидимым простите за каламбур - тогда на него не будет кликаться
0
Star2016
5 / 5 / 0
Регистрация: 26.07.2016
Сообщений: 233
22.08.2016, 10:07  [ТС] #5
Я наверно слишком путанно объяснил. Мне нужно отлавливать событие касание экрана чтобы включать подсветку экрана. То есть коснулись экрана и подсветка со 20% на 100% , а через 15 секунд снова 20% Как это реализовать - понятно, НО вот как ловить событие касания при учете того что нужно сохранить функциональность интерфейса и при подсветке в 20%
0
vxg
Модератор
3246 / 2047 / 322
Регистрация: 13.01.2012
Сообщений: 7,926
22.08.2016, 10:19 #6
Цитата Сообщение от Star2016 Посмотреть сообщение
Мне нужно отлавливать событие касание экрана чтобы включать подсветку экрана. То есть коснулись экрана и подсветка со 20% на 100% , а через 15 секунд снова 20%
ооо
0
Pablito
2707 / 2154 / 731
Регистрация: 12.05.2014
Сообщений: 7,516
Завершенные тесты: 1
22.08.2016, 10:36 #7
Лучший ответ Сообщение было отмечено Star2016 как решение

Решение

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.MotionEvent;
import android.view.WindowManager;
 
public class MainActivity extends AppCompatActivity {
 
    private static final int DELAY = 15000;
 
    private final Runnable actionDimScreen = new Runnable() {
        @Override
        public void run() {
            dimScreen();
        }
    };
 
    private float defaultBrightness;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //
        final WindowManager.LayoutParams lp = getWindow().getAttributes();
        defaultBrightness = lp.screenBrightness;
        dimScreen();
    }
 
    @Override
    protected void onResume() {
        super.onResume();
        dimScreen();
    }
 
    private void dimScreen() {
        final WindowManager.LayoutParams lp = getWindow().getAttributes();
        lp.screenBrightness = 0; // это не выключение экрана, а минимальный уровень яркости
        getWindow().setAttributes(lp);
    }
 
    private void restoreBrightness() {
        final WindowManager.LayoutParams lp = getWindow().getAttributes();
        lp.screenBrightness = defaultBrightness;
        getWindow().setAttributes(lp);
    }
 
    @Override
    public boolean dispatchTouchEvent(MotionEvent e) {
        switch (e.getAction()) {
            case MotionEvent.ACTION_DOWN:
                restoreBrightness();
                getWindow().getDecorView().removeCallbacks(actionDimScreen);
                break;
            case MotionEvent.ACTION_UP:
                getWindow().getDecorView().postDelayed(actionDimScreen, DELAY);
                break;
        }
        return super.dispatchTouchEvent(e);
    }
}
на 100% это слишком, пусть берет дефолтное значение, которое задано в системе или пользователем в настройках
2
Valakin
431 / 97 / 15
Регистрация: 21.02.2015
Сообщений: 736
22.08.2016, 11:10 #8
Цитата Сообщение от Star2016 Посмотреть сообщение
onClik всех компонентов в программе не вариант
писать родительскую активити с прописанным onTouchEvent(),
у других активити написать что они наследуются от родительской активити
как вариант
0
Pablito
22.08.2016, 11:12
  #9

Не по теме:

тем, кто не любит читать мои сообщения
dispatchTouchEvent - метод активити, который хавает все касания внутри этой активити

0
Star2016
5 / 5 / 0
Регистрация: 26.07.2016
Сообщений: 233
22.08.2016, 11:14  [ТС] #10
dispatchTouchEvent - отлично работает! Спасибо!!! А что касается 100% яркости то я привел это значение для примера. На самом деле верхняя гланица впрочем как и нижняя задается пользователем в настройках программы.
0
22.08.2016, 11:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2016, 11:14

WakeLock для затухания экрана
Здравствуйте! как можно реализовать затухание экрана, экран не выключается из...

Максимальный размер картинок для экрана
Всем привет! Задал картинку с drawable в background LinerLayout. В некторых...

Какой использовать элемент экрана для вывода текста?
Здравствуйте. Во вкладке Pallete в Intellij IDEA доступны различные слои,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru