如何在android中从上到下显示渐变效果

时间:2012-04-10 07:40:21

标签: android

任何人都可以告诉如何在android中从上到下显示渐变效果。可以任何人提供示例

由于

4 个答案:

答案 0 :(得分:47)

在您的dawable文件夹名称中创建一个xml文件,如gradient_bg.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient 
        android:startColor="#000" 
        android:endColor="#fff"
        android:angle="90"
     />
</shape>

并将其设置为View的背景。

android:background="@drawable/gradient_bg"

setBackgroundResource(R.drawable.gradient_bg);

答案 1 :(得分:5)

<shape xmlns:android="http://schemas.android.com/apk/res/android" >

    <gradient

        android:angle="90"
        android:type="linear"
        android:startColor="#FFFFFF"
        android:endColor="#000000" />

</shape>

此处如果将角度设置为270,则开始颜色将显示在底部,最终颜色显示在顶部 如果您将角度设置为90,则会反转

答案 2 :(得分:1)

您可以使用自定义视图来执行此操作。通过此解决方案,可以完成项目中所有颜色的渐变形状:

class GradientView(context: Context, attrs: AttributeSet) : View(context, attrs) {

    // Properties
    private val paint: Paint = Paint()
    private val rect = Rect()

    //region Attributes
    var start: Int = Color.WHITE
    var end: Int = Color.WHITE
    //endregion

    override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {
        super.onSizeChanged(w, h, oldw, oldh)
        // Update Size
        val usableWidth = width - (paddingLeft + paddingRight)
        val usableHeight = height - (paddingTop + paddingBottom)
        rect.right = usableWidth
        rect.bottom = usableHeight
        // Update Color
        paint.shader = LinearGradient(0f, height.toFloat(), 0f, 0f,
                start, end, Shader.TileMode.CLAMP)
        // ReDraw
        invalidate()
    }

    override fun onDraw(canvas: Canvas) {
        super.onDraw(canvas)
        canvas.drawRect(rect, paint)
    }

}

我还使用以下自定义视图创建一个开源项目 GradientView

https://github.com/lopspower/GradientView

implementation 'com.mikhaellopez:gradientview:1.1.0'

答案 3 :(得分:0)

在android中使用透明显示从上到下的渐变效果:

  1. 在res / drawable文件夹中创建一个名为gradient_transparent.xml的新XML文件,并添加以下代码。
  2. var messagingFactory = MessagingFactory.CreateFromConnectionString("MyConnectionString");
    var messageReceiver = messagingFactory.CreateMessageReceiver("MyQueueName");
    messageReceiver.OnMessage(message =>
    {
    
        // You always have access to the queue path
        var queueName = messageReceiver.Path;
    }, new OnMessageOptions());
    

    在XML布局文件中

      <?xml version="1.0" encoding="utf-8"?>
        <shape xmlns:android="http://schemas.android.com/apk/res/android">
            <gradient
                android:startColor="#90000000"
                android:endColor="#00ffffff"
                android:angle="90"
                />
        </shape>