Использование растрового изображения с android: alpha = "x" дает противоположный эффект при использовании в качестве фона активности - PullRequest
0 голосов
/ 06 июня 2019

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

Для этого я создал ресурс для рисования (openscreenbgg.xml) и создал <layer-list> следующим образом:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
     <item>
        <bitmap
            android:src="@drawable/bgnew"
            android:gravity="fill"
            android:alpha="0.4">
        </bitmap>
    </item>
    <item>
        <shape android:shape = "rectangle" >
            <gradient
                android:startColor="#000000"
                android:type="linear"
                android:angle="90"/>
        </shape>
    </item>

bgnew - имя изображения

Я установил Android: альфа для желаемого эффекта прозрачности и добавленный элемент <shape> для градиента

Превью этого xml отлично и именно то, что я хочу:

ожидается

Но когда я использую это в качестве фона для своей деятельности, примерно так:

android:background="@drawable/openscreenbgg"

Предварительный просмотр намного ярче:

Фактический

Я неправильно истолковал использование android: альфа здесь? Означает ли это, что сделать его более прозрачным означает, что через него проходит больше «света», и поэтому он становится ярче?

1 Ответ

0 голосов
/ 06 июня 2019

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

Один из способов решить эту проблемуизменить способ создания фонового изображения.Вместо использования альфа на растровом изображении, вы можете замаскировать все изображение полупрозрачным черным.Конечный результат должен быть примерно таким же, но вам не придется беспокоиться о том, что фон окна «просвечивает» изображение.

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <bitmap
            android:src="@drawable/bgnew"
            android:gravity="fill">
        </bitmap>
    </item>
    <item>
        <shape android:shape="rectangle">
            <gradient
                android:startColor="#FF000000"
                android:endColor="#99000000"
                android:type="linear"
                android:angle="90"/>
        </shape>
    </item>
</layer-list>

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

...