Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Valakin
430 / 96 / 15
Регистрация: 21.02.2015
Сообщений: 724
#1

Touch – обработка касания - Android

02.02.2016, 15:38. Просмотров 443. Ответов 5
Метки нет (Все метки)

Задача - чтобы после прикосновения уменьшался шрифт до тех пор пока не будет поднят палец.
Если ли другие варианты, кроме как написать второй поток и из него в бесконечном цикле все это делать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.02.2016, 15:38     Touch – обработка касания
Посмотрите здесь:

Обработка MotionEvent Android
Обработка столкновений Android
Android listview и touch
Android Обработка событий
Обработка касания(провести пальцем) Android
Слушатель для события касания по тексту Android
Как создать обработчик касания в игре? Android
Обработка Json Android
Android Обработка касания touch
Android Поставить View поверх другой и отключить touch
Проверка касания экрана в любом месте Android
Canvas, SurfaceView, Touch Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
02.02.2016, 15:52     Touch – обработка касания #2
Valakin, в смысле, какой второй поток? Вы же в интерфейсе всё делаете. Поэтому это UI-поток. Там и меняете. Тормозить будет в любом случае. И почему это цикл бесконечный? Если вы делаете для TextView, то достаточно доли секунды, чтобы шрифт уменьшился до нуля.
Valakin
430 / 96 / 15
Регистрация: 21.02.2015
Сообщений: 724
02.02.2016, 16:20  [ТС]     Touch – обработка касания #3
Цитата Сообщение от CoolMind Посмотреть сообщение
Там и меняете
менять надо не один раз, а постепенно, пока пользователь не уберет палец,
как бы вы реализовали?
вопрос больше не к размеру шрифта (можно например переменную уменьшать на процент),
а к работе кода
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
02.02.2016, 16:43     Touch – обработка касания #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Valakin, нужно определить область, нажатие на которой вызывает событие. Дальше переопределить метод onTouch, например, как в http://startandroid.ru/ru/uroki/vse-...botka-kasanija. Я использовал для этой цели ImageView. В функции вам потребуется обрабатывать такие действия: MotionEvent.ACTION_DOWN, MotionEvent.ACTION_UP и MotionEvent.ACTION_CANCEL. Соответственно, при нажатии пальца возникает ACTION_DOWN, при отпускании - ACTION_UP. В блоке ACTION_DOWN вам нужно, например, брать текущее время и сравнивать с тем, когда последний раз меняли шрифт. В ACTION_UP таймер можно опять занулять. Дальше вычисляете, сколько прошло времени с момента последнего изменения. Например, прошло 100 мс, можно уменьшить шрифт на 0.2. Меняете у всех нужных компонентов шрифт, меняете время последнего изменения. Если хотите, могу попробовать код написать.
Valakin
430 / 96 / 15
Регистрация: 21.02.2015
Сообщений: 724
02.02.2016, 16:52  [ТС]     Touch – обработка касания #5
спасибо, но я явно плохо объясняю,
работать должно только от одного прикосновения, то есть ACTION_DOWN будет всего один раз
и пока палец не поднят постепенно уменьшается переменная которая задает размер
Паблито
2012 / 1754 / 545
Регистрация: 12.05.2014
Сообщений: 6,208
Завершенные тесты: 1
02.02.2016, 17:05     Touch – обработка касания #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
боже, та шо там писать тот второй поток, создаем где-то в активити что-то типа
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
    private final ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
 
    private final View.OnTouchListener listener = new View.OnTouchListener() {
        private ScheduledFuture<?> future;
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    future = service.scheduleAtFixedRate(task, 0, 200, TimeUnit.MILLISECONDS);
                    break;
                case MotionEvent.ACTION_UP:
                    future.cancel(true);
                    break;
            }
            return true;
        }
    };
 
    private final Runnable task = new Runnable() {
        private final Handler handler = new Handler(Looper.getMainLooper());
 
        @Override
        public void run() {
            handler.post(new Runnable() {
                @Override
                public void run() {
                    textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, textView.getTextSize() - 1);
                }
            });
        }
    };
и вешаем OnTouchListener на нужное нам textView
PROFIT
Yandex
Объявления
02.02.2016, 17:05     Touch – обработка касания
Ответ Создать тему
Опции темы

Текущее время: 01:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru