Модераторы: javastic
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> определить объект по координатам 
:(
    Опции темы
Dapo
Дата 21.4.2011, 06:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 18.4.2002

Репутация: 1
Всего: 1



Доброго всем. Вопрос такой: наилучший способ для идентификации объекта "под пальцем".
на TableLayout лежит несколько ImageView. Обрабатываю событие onTouch event ACTION_MOVE для TableLayout. Необходимо определить на каком (или ни на каком) ImageView находится палец.
Есть задумка брать текущие координаты а потом в цикле сверять с координатами всех ImageView.
Спасибо.
PM MAIL   Вверх
ivanovpv
Дата 21.4.2011, 07:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


Профиль
Группа: Участник
Сообщений: 639
Регистрация: 26.1.2005
Где: Москва

Репутация: 9
Всего: 28



А зачем так то? Нельзя просто перехватывать onClick() или onTouch() на ImageView?


--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
Dapo
Дата 21.4.2011, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 18.4.2002

Репутация: 1
Всего: 1



Можно. Только как в этом случае реализовать мультитач? Да и кроме того, если я веду пальцем по экрану с одного вью на другой то событие онтач будет у того с кого начал. Ведь так?

Добавлено через 9 минут и 54 секунды
Лежит два имаджвью к ним прикручена кадровая анимация. Перехватываем онтач action_down запускаем там анимацию. На action_up останавливаем. Запускаем приложение жмем первый имадж: пошла анимация. Теперь не отпуская жмем второй-борода.

Это сообщение отредактировал(а) Dapo - 21.4.2011, 11:31
PM MAIL   Вверх
Dapo
Дата 23.4.2011, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 18.4.2002

Репутация: 1
Всего: 1



Народ я фигню спросил? smile
PM MAIL   Вверх
Dapo
Дата 24.4.2011, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 18.4.2002

Репутация: 1
Всего: 1



хмм. вот что получилось:

Код

public int FindChildAtXY(ViewGroup ll, int x, int y) {
        int i = 0;
        View viewChild = null;
        int res = -1;
        
        for (i = 0;  i<=ll.getChildCount() - 1; i++) {
            viewChild = ll.getChildAt(i);
        if ((x>=viewChild.getLeft())&(x<=viewChild.getRight())) { 
        if (y>=viewChild.getTop()&y<=viewChild.getBottom()) {
            res = viewChild.getId();
            break;
        };
        };
        };
        if ((viewChild!=null)&(viewChild instanceof ViewGroup)){
            x = x - viewChild.getLeft();
            y = y - viewChild.getTop();
            res = FindChildAtXY((ViewGroup)viewChild,x,y);
        }
    return res;
    }

Функция возвращает id самой верхней вьюшки по заданным координатам не являющейся ViewGroup и -1 если это не так. Рекурсия понятно для чего нужна, + пересчет координатов для каждой ViewGroup (иначе будут ловиться вьшки расположенные в топ-е).
Теперь можно обработать например ontouch самого главного парентаи там ловить объекты "под пальцем". по моему кул. smile
Комментарии? Есть более изящный подход?  Яву начал изучать с момента своего первого поста в форуме Android. так что просьба сильно не пинать.
PM MAIL   Вверх
ivanovpv
Дата 26.4.2011, 07:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


Профиль
Группа: Участник
Сообщений: 639
Регистрация: 26.1.2005
Где: Москва

Репутация: 9
Всего: 28



Я за такие инденты увольнял прогеров  smile 

Ну а так вроде ниче, только вот имейте ввиду что вьюшек под пальцем будет туева хуча - хорошо если меньше десятка. Где-то хорошо бы вставить что-то типа
Код

if (view instanceof MyView)
{
    //тарарарам
}



--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
Dapo
Дата 1.5.2011, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 18.4.2002

Репутация: 1
Всего: 1



Оо! Наконец-то откликнулся!)) Спасибо. так и есть вставил проверку на инстанс. Только в посте не исправил)
А инденты... Ну черновой набросок жеж.

Это сообщение отредактировал(а) Dapo - 1.5.2011, 15:18
PM MAIL   Вверх
Dapo
Дата 3.5.2011, 02:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 18.4.2002

Репутация: 1
Всего: 1



Да вот еще. Функция возвращает топовую вьюху если она не инстанс viewgroup. неважно какой это все вложенности. А вложенность 10 и более.. пишут, что это плохая орагинизация лэйаута. вроде как не рекомендуют делать большую вложенность во избежание тормозов..
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Android | Следующая тема »


 




[ Время генерации скрипта: 0.0600 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.