Как установить градиент цвета от полной прозрачности до темного в Android? - PullRequest
1 голос
/ 17 мая 2019

У меня есть изображение и вид карты, поднятый поверх него. Внутри карты содержится несколько просмотров.

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

Это то, что я пробовал до сих пор:

<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
    android:startColor="#80000000"
    android:endColor="#FF000000"
    android:angle="270"
    android:dither="true"
    />
</shape>

Это не делает мое изображение видимым. Я изучил много сообщений SOF, но не смог воспроизвести то, что хочу!

Любые входные данные приветствуются и будут очень полезны !!

Ответы [ 3 ]

1 голос
/ 17 мая 2019

Используйте этот XML-код

<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
    android:startColor="#21293B"
    android:centerColor="#21293B00"
    android:endColor="#00000000"
    android:angle="90"/>
</shape>

поместите его в качестве фона для представления, поместите этот вид выше вашего ImageView

 <RelativeLayout
            android:id="@+id/player_layout"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
<ImageView
            android:id="@+id/shasha_poster"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true"
            android:minHeight="500dp"
            android:scaleType="centerCrop"
            android:src="@drawable/placeholder"
            android:visibility="visible" />

<View
            android:id="@+id/gradient"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@drawable/background_with_shadow2" />
 </RelativeLayout>
0 голосов
/ 17 мая 2019

Я думаю, это то, что вы ищете, я проверяю это и работаю, как вы ожидали.

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="5dp">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:src="@drawable/your_image" />

    <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fillViewport="true"
        card_view:cardBackgroundColor="@color/transparent"
        card_view:cardCornerRadius="5dp"
        card_view:cardElevation="0dp"
        card_view:cardMaxElevation="0dp"
        card_view:cardPreventCornerOverlap="false"
        card_view:cardUseCompatPadding="true"
        card_view:contentPaddingTop="2dp">

        <RelativeLayout
            android:id="@+id/list_container_bg"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:background="@drawable/your_gradient"
            android:gravity="center"
            android:orientation="vertical">

            <!--Add your cardview contents-->


        </RelativeLayout>


    </android.support.v7.widget.CardView>

</FrameLayout>

Это файл градиентного фона your_gradient.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient
        android:startColor="#80000000"
        android:endColor="#FF000000"
        android:angle="270"
        android:dither="true"
        />
</shape>
0 голосов
/ 17 мая 2019

Вы можете сделать что-то вроде этого

// this is your back image
<ImageView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:src="@drawable/xxxxx"
    ...
    />

// your cardview over the image
<android.support.v7.widget.CardView
    android:layout_width="match_parent"
    android:layout_height="100dp"
    app:cardBackgroundColor="#00000000"    // make cardview transparent
    ...
    >

    // an image to make the new drawable background
    <ImageView
        android:background="@drawable/gradient"  // the xml with your gradient
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="fitXY"
        />

</android.support.v7.widget.CardView>
...