Android: могу ли я создать вид / холст не прямоугольный, а, например, круглый? - PullRequest
12 голосов
/ 29 сентября 2010

У меня есть вид, который является круглым и завис над (-> в направлении оси z, выходящей из экрана) основного содержимого. Когда кто-то касается экрана, я хочу, чтобы было выбрано либо основное содержимое, либо вид, отображаемый выше, когда он покрывает основной вид.

Пока все работает отлично. У меня есть предмет круглой формы на прозрачном холсте. Это означает, что вы можете видеть все, что находится за пределами этого круга. Однако вы не можете выбрать его, потому что это все еще парящий холст, просто с прозрачной краской.

Теперь мне интересно, чтобы решить эту проблему, можно ли сделать само представление / холст круглой формы?


Обновление

Я добавил изображение для лучшего объяснения того, чего я пытаюсь достичь. alt text

Ответы [ 3 ]

4 голосов
/ 02 октября 2010

Насколько я знаю - это невозможно.Я проверил источники View.java на git.kernel.org, и он основан на классе Rect - текты определяют положение, размер, регионы для аннулирования и т. Д. («Геометрия видапрямоугольник. "- из комментариев в View.java)

Что касается класса Canvas - он обычно создается поверх Bitmap или GL.Растровое изображение определенно является прямоугольником (матрицей), поэтому canvas, похоже, также представляет прямоугольник.При использовании GL указывается область просмотра (которая также является прямоугольником).

Кажется, что наиболее очевидный способ проверить, соответствуют ли координаты, переданные вашему методу onTouch (), вашему региону, и возвращает false, если онинет.Затем событие будет передано представлению ниже, и оно должно обработать событие.

1 голос
/ 16 августа 2014

Возможно, больше не относится к исходному аскеру, но для тех, кто все еще смотрит, похоже, что это будет добавлено в L: https://developer.android.com/preview/material/views-shadows.html#clip. Метод View.setClipToOutline позволяет обрезать вид в формепрямоугольная, круглая или круглая прямоугольная вытяжка.

0 голосов
/ 29 сентября 2010

Вам нужно указать Android Selector , чтобы избежать зависания изображения по умолчанию.

...