Как вызвать обработчики нажатия на каждом из пересекающихся views?

Есть 2 компонента View, на задний фон каждого наложена картинка, представляющая из себя кропку. Компоненты частично пересекаются. Конечная цель вызывать свой обработчик для каждой кнопки при нажатии на зеленую или желтую область. Я представляю себе решение следующим образом: При щелчке на любом месте view должен взяться цвет той точки по которой нажали и если он не прозрачный, то выполнить код, обрабатывающий нажатие. Соответственно возникают 2 проблемы
1. Как взять цвет в контексте view в точке нажатия. Это означает, что мне нужен не цвет фона приложения, а цвет именно view. Другими словами если щелкнуть по view с желтой картинкой я должен получать либо желтый цвет, либо прозрачный (цвет должен содержать еще и прозрачность alpha) в зависимости от нажатия по желтой области или вне ее.
2. Если я щелкаю по области, где view перекрывают друг друга, то должны быть запущены два обработчика от обоих view, каждый из которых должен выяснить щелкнули по цветовой или по прозрачной области (красными точками показаны три различных варианта). В первом случае один из обработчиков должен выяснить что щелкнули мимо зеленой области и завершиться, а второй, поняв, что щелкнули по желтой выполнить код, который соответствует нажатию по желтой кнопке. Во втором случае оба обработчика должны завершиться не затрагивая логику нажатий. Ну и в третьем, соответственно обратно случаю 1 - должна быть вызвана логика нажатия на зеленую кнопку. КАК ЭТО СДЕЛАТ - вызвать оба обработчика, У МЕНЯ ВЫЗЫВАЕТСЯ ТОТ ОБРАБОТЧИК view которого лежит выше по оси Z)5e5e9b47e916e222276508.png

Приму другой вариант решения задачи, подскажите
  • Вопрос задан
  • 31 просмотр
Пригласить эксперта
Ответы на вопрос 2
@YuryBorodkin
Android dev
Скорее никах. В приницпе, если сделать скриншот экрана, сохранить 1:1, потом найти точку тапа и руками посмотреть цвет, можно что-то запилить, но это реально нереальный костыль.
Тут либо руками считать (для геометрических фигур), либо все это запихнуть в один view и там уже смотреть куда тап попал.
Ответ написан
Комментировать
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
Сделать одну кастомную вью, фоном ей поставить им пятна и реализовать Тачи самостоятельно. Городить огород из вьюх тут не нужно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы