Intereting Posts
Проверены ли «ожидаемый ресурс типа» Android Studio? Действия пользователя / фрагменты Android для загрузки данных GetString вне контекста или действия Приостановить приложение Android с помощью Phonegap Где Android AVD Manager находится на Mac? Нужен пример о RecyclerView.Adapter.notifyItemChanged (int position, полезная нагрузка Object) Странная проблема в объединении аудиофайлов и воспроизведении в разных версиях API Как сохранить положение прокрутки RecyclerView в Android? Как программно отключить или удалить спаренное устройство Bluetooth на Android? ANDROID – определение цвета с использованием openCV – как? Как скрыть разделитель, когда удаление анимации происходит в режиме ресайклера Android: Как установить предпочтительный режим просмотра клавиатуры из IME Андроидный холст удалить предыдущий путь Как я могу установить тень представления только по сторонам для просмотра с увеличением Android: анимация скроллеров?

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

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

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

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


Обновить

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

Solutions Collecting From Web of "Android: могу ли я создать представление / холст, который не является прямоугольным, но, например, круглый?"

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

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

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

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

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