Наложение затухания через FrameLayout foreground с заданным прямоугольником, который вырезает часть затухания

#java #android #xamarin #drawable #android-framelayout

#java #Android #xamarin #можно рисовать #android-framelayout

Вопрос:

Цель: выделенная часть изображения (изображение покрывает весь экран). Остальная часть экрана должна быть затемнена.

Пример

До сих пор я работал с затуханием, используя передний план FrameLayout и помещая изображение в качестве фона RelativeLayout в FrameLayout. Решение, о котором я думаю, заключается в том, что мне нужно создать 2 чертежа и объединить их в один, который может использовать FrameLayout Foreground.

Я также немного читал о PorterDuff, но я думаю, что это может быть излишним для того, чего я пытаюсь достичь.

Функциональность fade работает нормально, но источник fade с прозрачным разделом — нет.

Комментарии:

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

2. Конечно. Я пытаюсь создать чертеж, который программно вырезает раздел фигуры. Для фигуры я в настоящее время использую фигуру в XML-файле.

Ответ №1:

Я предполагаю, что у вас есть исходное изображение ImageView поверх него, разместите 4 вида, которые частично затемнены, и все! С помощью некоторой базовой математики вы можете узнать размеры для каждого вида, а использование RelativeLayout позволит вам легко размещать их на экране.

Удачи!

PS Я приложил эскиз, чтобы проиллюстрировать то, что я предлагаю. введите описание изображения здесь

Комментарии:

1. Это выглядит как гораздо более эффективный подход, чем то, о чем я думал. Спасибо!

2. Всегда пожалуйста. Я был бы признателен, если вы примете ответ, если сочтете его полезным 🙂

3. К сожалению, это все-таки не работает для меня. Это было бы, если бы на странице не было других представлений, которые должны были вести себя по-другому. gyazo.com/40d47db2d83f9acd0c61c292866a6ca4 На заднем плане есть другие виды, которые нужно убрать, поэтому я просматривал свойство переднего плана FrameLayout с помощью Porterduff.

4. Мне жаль это слышать. Я не понимаю, как наличие большего или меньшего количества просмотров влияет на вашу проблему. пока вы сохраняете четыре вида поверх всего остального, вы получите желаемый эффект. Попробуйте разместить четыре «затемненных» вида в макете, чтобы вам когда-либо приходилось иметь дело с одним элементом (для анимации, видимости и так далее). Удачи вам

5. Я немного изменил свои тесты, и оказалось, что это функциональный и правильный ответ! Извините, ха-ха 🙂 Еще раз спасибо.