Android-галерея управляет порядком событий касания, не синхронизированных с getChildDrawingOrder - PullRequest
2 голосов
/ 22 декабря 2011

Я создаю пользовательский элемент управления расширением галереи Android.Мне нужен эффект наложения наложенных изображений, поэтому я выдаю

setSpacing(-60);

. После того, как я это сделаю, у меня в Галерее три значка: сначала нарисованы 1, 3, а затем 2, которая является центральной.Правила того же самого определены в getChildDrawingOrder и также включили его как

setChildrenDrawingOrderEnabled(true);

Теперь проблема заключается в том, что представления прорисовываются так, как я определил правила в порядке.Но события в элементе управления галереей идут в исходном порядке просмотра, т.е. 1,2,3.Чтобы объяснить лучше,

1 рисуется, 3 рисуется и, наконец, 2 рисуется, и они перекрывают друг друга.Таким образом, представление имеет 50% от 1, 100% от 2 и 50% от третьего вида.

Но когда я касаюсь представлений, android предполагает, что 50% из 1, 50% из 2 и 100% из 3виден на экране.Чтобы прояснить это немного, после 50% просмотра 1, если я нажму, 2 будет сфокусировано (как и должно быть, потому что, согласно моему правилу рисования, 2 сверху 1).

Но когда я щелкаю в любом месте после 50% просмотра 2, фокус переходит на 3, в то время как в соответствии с порядком рисования 3 там не видно, 100% из 2 видна, но для 50% площадизрения 1, основное внимание уделяется виду 2.

Не могли бы вы помочь поделиться своими мыслями о том, как мы можем решить эту проблему, навязывая порядок событий в соответствии с шаблоном представления на экране?

1 Ответ

0 голосов
/ 22 сентября 2012

Вы должны вручную пересчитать области касания этих дочерних видов.

Скорее всего, вы захотите переопределить getHitRect () и вернуть свой собственный Rect объект, границы которого были скорректированы в соответствии с перекрывающимися областями.

...