如何在 android 中设置从完全透明到深色的渐变颜色?

How to set gradient color from complete transparency to dark in android?

我有一个 imageview 和一个 cardview 在它上面。卡片视图包含多个视图。

我想给 cardview 设置一个背景颜色,这样它的 startcolor 应该使它后面的 imageview 的初始部分以 30% 的透明度可见,并且 cardview 应该变得更暗并且最后变黑。

这是我目前尝试过的方法:

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

这不会使我的图像视图 visible.I 探索了许多 SOF 帖子,但无法重现我想要的内容!

欢迎任何意见,这将非常有帮助!!

你可以这样做

// 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>

使用此 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>

将其作为 View 的背景,将该 View 置于 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>

我认为这就是您要找的,我测试了它并按您的预期工作。

<?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>