如何在android中的单个图像视图中添加两个渐变(顶部 - 底部和底部 - 顶部)?

时间:2015-12-11 01:23:54

标签: android

我正在尝试在图像的顶部和底部向图像视图添加渐变。我不想在图像视图的顶部添加textview。我该如何实现它?

1 个答案:

答案 0 :(得分:4)

看起来你的简单而干净的解决方案是使用FrameLayout包装ImageView并使用前景属性,如下所示:

布局

<FrameLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:foreground="@drawable/gradient">
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/male"/>
</FrameLayout>

渐变以防万一

<?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android">

    <gradient
        android:startColor="#33000000"
        android:centerColor="@android:color/transparent"
        android:endColor="#33000000"
        android:angle="90"/>
</shape>

产生这个:

enter image description here

FrameLayout是一种相对简单的结构,不会增加视图层次结构的复杂性,例如,相对于RelativeLayout,这将导致额外的测量。

如果您必须避免添加任何额外的包装器视图,那么您的下一个选项是创建一个CustomView,从ImageView扩展并覆盖onDraw()方法,并使用渐变位图的像素手动覆盖现有画布。