Intereting Posts
Как реализовать навигационный ящик с детальными деталями фрагментов Разделение проблем деятельности и GoogleApiClient Что такое UnityPlayerActivity, UnityPlayerNativeActivity, UnityPlayerProxyActivity? SetOnItemClickListener () не работает на пользовательском ListView @ Android Используя SimpleXML, как игнорировать элементы xml, которых у меня нет в классе объектов при десериализации Выбор текста в Android в Webview Как скрыть делитель между предпочтениями в фрагменте Различать планшет и смартфон на ICS Cursorloader не обновляется при изменении базовых данных Прозрачная тема не работает при программном программировании на Android 2.3.3 или 4.2 Match_parent не работает для панели инструментов с макетом внутри Android webview SKIPS javascript даже с setJavascriptEnabled (true) и WebChromeClient Как я могу реализовать разрешения на работу с Android 6.0 Runtime в существующем приложении Android – приостановка всех потоков: * ms Аннулирование HTTP-прокси-сервера для эмулятора 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, чтобы избежать изображения, зависящего от по умолчанию.