powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / проблема с getTextBounds
6 сообщений из 6, страница 1 из 1
проблема с getTextBounds
    #39345692
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите разобраться.
Есть HashMap, в качестве ключа буква, в качестве значения координаты прямоугольника, в который эта буква вписана. В обработчике события onTouch пытаюсь получить букву. Проблема в том, что не работает условие, которое проверяет попали ли координаты в область прямоугольника. Вот код

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
public boolean onTouch(View v, MotionEvent event){
            //Toast.makeText(getApplicationContext(),"КАСАНИЕ",Toast.LENGTH_SHORT).show();
            // Получим координаты касания
            float x=event.getX();
            float y=event.getY();
            Log.d("myLogs", Float.toString(x)+'_'+Float.toString(y));
            // Получаем набор элементов
            Set<Map.Entry<Character, Rect>> set = hm.entrySet();
            // Отобразим набор
            for (Map.Entry<Character, Rect> me : set) {
                Rect r = (Rect) me.getValue();
                Log.d("myLogs", (Character) me.getKey()+"__"+  r.toString());
                Log.d("myLogs", Boolean.toString(x>Math.abs(r.left))+'_'+Boolean.toString(x<Math.abs(r.right))+'_'+Boolean.toString(y>Math.abs(r.bottom))+'_'+Boolean.toString(y<Math.abs(r.top)));
                if (x>Math.abs(r.left) && x<Math.abs(r.right) && y>Math.abs(r.bottom) && y<Math.abs(r.top)){
                    Log.d("myLogs", "ОК");
                    //Toast.makeText(getApplicationContext(),"xxx",Toast.LENGTH_SHORT).show();
                }
                /*System.out.print(me.getKey() + ": ");
                System.out.println(me.getValue());*/
            }
            return true;
        }



нажимаю букву "П"
в логах вот что, по идее все должно работать
11-11 15:03:04.361 31103-31103/ru.androiddeveloper.ya.gamekid D/myLogs: 76.0_247.0
11-11 15:03:04.371 31103-31103/ru.androiddeveloper.ya.gamekid D/myLogs: __Rect(190, 250 - 190, 250)
11-11 15:03:04.371 31103-31103/ru.androiddeveloper.ya.gamekid D/myLogs: false_true_false_true
11-11 15:03:04.371 31103-31103/ru.androiddeveloper.ya.gamekid D/myLogs: !__Rect(225, 557 - 231, 600)
11-11 15:03:04.371 31103-31103/ru.androiddeveloper.ya.gamekid D/myLogs: false_true_false_true
11-11 15:03:04.371 31103-31103/ru.androiddeveloper.ya.gamekid D/myLogs: и__Rect(194, 428 - 220, 460)
11-11 15:03:04.371 31103-31103/ru.androiddeveloper.ya.gamekid D/myLogs: false_true_false_true
11-11 15:03:04.371 31103-31103/ru.androiddeveloper.ya.gamekid D/myLogs: П__Rect(74, 207 - 108, 250)
11-11 15:03:04.371 31103-31103/ru.androiddeveloper.ya.gamekid D/myLogs: true_true_false_false
11-11 15:03:04.371 31103-31103/ru.androiddeveloper.ya.gamekid D/myLogs: м__Rect(104, 78 - 140, 110)
11-11 15:03:04.371 31103-31103/ru.androiddeveloper.ya.gamekid D/myLogs: false_true_true_false
11-11 15:03:04.371 31103-31103/ru.androiddeveloper.ya.gamekid D/myLogs: в__Rect(224, 358 - 252, 390)
11-11 15:03:04.371 31103-31103/ru.androiddeveloper.ya.gamekid D/myLogs: false_true_false_true
11-11 15:03:04.381 31103-31103/ru.androiddeveloper.ya.gamekid D/myLogs: р__Rect(104, 637 - 132, 683)
11-11 15:03:04.381 31103-31103/ru.androiddeveloper.ya.gamekid D/myLogs: false_true_false_true
11-11 15:03:04.381 31103-31103/ru.androiddeveloper.ya.gamekid D/myLogs: т__Rect(282, 288 - 309, 320)
11-11 15:03:04.381 31103-31103/ru.androiddeveloper.ya.gamekid D/myLogs: false_true_false_true
11-11 15:03:04.381 31103-31103/ru.androiddeveloper.ya.gamekid D/myLogs: е__Rect(162, 7 - 190, 41)
11-11 15:03:04.381 31103-31103/ru.androiddeveloper.ya.gamekid D/myLogs: false_true_true_false

HashMap заполняю так
Код: java
1.
2.
3.
4.
5.
                p.getTextBounds(Character.toString(ch[j]), 0, 1, bounds);
                bounds.offset(posX[j], posY[j]);

                //Log.d("myLogs", bounds.toString());
                hm.put(ch[j],bounds);
...
Рейтинг: 0 / 0
проблема с getTextBounds
    #39345718
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikomp,

как минимум не вижу анализа MotionEvent.
...
Рейтинг: 0 / 0
проблема с getTextBounds
    #39345723
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

зачем его анализировать? я получил из него координаты
...
Рейтинг: 0 / 0
проблема с getTextBounds
    #39345734
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikomp,

там помимо нажатия и отпуска, есть движения и т.д.
...
Рейтинг: 0 / 0
проблема с getTextBounds
    #39345736
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я с телефона.
Разве у rect нет что-то вроде intersect или contain?
...
Рейтинг: 0 / 0
проблема с getTextBounds
    #39345769
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

разобрался Rect(left, top, right, bottom), оказалось, что top<bottom, видимо getTextBounds берет координаты начиная с левого верхнего угла, но информации в подтверждение этого так и не нашел.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Android [игнор отключен] [закрыт для гостей] / проблема с getTextBounds
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]