Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Turalll
1 / 4 / 0
Регистрация: 03.06.2010
Сообщений: 92
#1

Определить область касания и чувствительность (тачпад на экране) - Программирование Android

18.06.2016, 23:25. Просмотров 465. Ответов 0
Метки нет (Все метки)

есть на сцене спрайт , который можно двигать касанием по нему. Хочу внизу экрана определить область , касаясь которой, я смогу двигать этот спрайт. В общем типо точпада на экране. Пробую делать это средствами движка andengine , но мои поиски не привели ни к одному методу в этом движке , с помощью которого я хотя бы смог бы кликнуть на спрайт нажатием на указанную область.. подскажите какие методы помогут это реализовать.

Добавлено через 6 часов 1 минуту
дополню вопрос. вот пример https://gyazo.com/39b76d3e992dba4c369f428c9459c8a1 этот смайл должен двигаться , когда я буду перемещать палец по этой черной области (типо тачпад на экране) . Пробовал возможности движка andengine и ничего готового не нашел, везде нужно прикоснуться к самому спрайту. Как под себя переделать аналоговое управление джостиком, который в движке andengine я тоже не понял, дошел до того, что там надо менять всю конструкцию метода. Решил самому написать всё это. Следующее, что нашел на просторах интернета, это Canvas. Сделал всё как тут https://habrahabr.ru/sandbox/27511/. на экране есть этот смайл , который перерисовывается там где я кликну. Вот тут я получаю координаты касания
Java
1
2
3
4
5
6
7
public boolean onTouchEvent(MotionEvent event) { 
            if(event.getAction() == MotionEvent.ACTION_DOWN) { 
                touchX = event.getX(); 
                touchY = event.getY(); 
                invalidate(); } 
            return true; 
        }
и перерисовываю смайл в новых координатах.
Но мне нужно , чтобы касания отлавливались только в определенной области экрана и далее я их буду подставлять и без invalidate() (пока не пробовал без него рисовать) перерисовывать этот смайл, только придется как то корректировать эти координаты. Ведь нужно подставлять не сами координаты , а изменение координаты. Т.е. нажал на область тачпад и начинаю двигать пальцем и будет отслеживаться разница между координатами и непрерывно передаваться для рисования . буду прибавлять к имеющимся координатам смайла эту разницу , а n-кратное увеличение или уменьшение этих координат позволит регулировать чувствительность тачпада. И еще решается такая проблема, которую я видел в начале, если коснуться смайлика пальцем и двигать его то смайлик начинает отставать от пальца, не достаточно быстро перерисовывается что ли..

Так вот нужна помощь с тем, чтобы определить область с которой считываются координаты касания, вернее изменения этой координаты от точки касания по движению. Спасибо, буду рад любому указанию к нужным методам и способам. или же может кто посоветует более разумный или эффективный способ реализации моей задачи.

Добавлено через 4 часа 0 минут
оказалось всё не так то и тяжело. правда я еще не сделал чтобы клики ловились в определенной области. но уже прогресс. при нажатии на любую область экрана этот смайл начинает двигаться и повторять мои движения, но если поставить курсор на смайл и начать двигаться, чтобы заметить насколько отрисовка его отстает от движения курсора , то заметно , что это отставание создает дискомфорт. вот кусок кода
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
@Override
        protected void onDraw(Canvas canvas) {
            // код рисующий графику
            Bitmap mybitmap = BitmapFactory.decodeResource(getResources(),R.drawable.face_box);
            // рисуем myBitmap на канве в координатах 10, 10
            canvas.drawBitmap(mybitmap, touchX, touchY, null);
 
        }
 
        public boolean onTouchEvent(MotionEvent event) {
            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    korX = touchX;
                    korY = touchY;
                    initX = event.getRawX();
                    initY = event.getRawY();
                   return true;
                case MotionEvent.ACTION_MOVE:
                    touchX = korX + (int) (event.getRawX() - initX);
                    touchY = korY + (int) (event.getRawY() - initY);
                    invalidate();
                return true;
            }
            return false;
        }
touchX и touchY это новые координаты, по которым метод invalidate() перерисовывает этот смайл, вот только медленно это происходит. как же это ускорить, какими способами рисовать?
Замечу что метод onTouch в котором реализовано и то что я сделал и вообще в нем реализуется касание по объекту и последующее его перемещение создает это отставание в прорисовке ( я так думаю) , потому что это отставание наблюдается везде где он используется. GestureDetector может имеет другую реализацию, попробую его использовать.. а что вы предложите ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2016, 23:25
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Определить область касания и чувствительность (тачпад на экране) (Программирование Android):

Емкостной сенсор касания чувствительность.
Заделал тут платку с stm32f0 по рекомендациям и даташитам ST для определения...

Определить, попадает ли точка в область на экране
Помогите пожалуйста решить) 1. С клавиатуры вводятся координаты точки...

Как определить момент касания катящейся окружности и точки?
Доброго времени суток, помогите, пожалуйста с задачей: Окружность малого...

Определить цену деления шкалы и чувствительность миллиамперметра
Для измерения силы тока используется миллиамперметр с равномерной шкалой,...

Определить, попадает ли заданная точка в заштрихованную область (границы не входят в область)
Условие: Напишите программу, которая определяет, попадает ли заданная точка в...

Изобразить на экране двумерную область, ограниченную графиками математических функций
Изобразить на экране двумерную область, ограниченную графиками математических...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2016, 23:25
Привет! Вот еще темы с решениями:

Внезапно появилась белая область на экране ноутбука Acer Aspire
В общем, переустанавливал я виндовс 8. Ставил 64-битную версию... Всё хорошо...

Определить область попадания в закрашенную область
помогите пожалуйста, определить область попадания в закрашенную область,...

видиокарта gtx 1070 из коробки раздула отображаемую область на экране и обрезала ее
здравствуйте, копил комп, коплектация как во втором посте темы ...

Исследовав область определения и выбрав расположение координатных осей на экране и масштаб, построить графики функций
Здравствуйте! Пожалуйста помогите написать программу Вот условие: Исследовав...


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

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

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