任何人都可以告诉如何在android中从上到下显示渐变效果。可以任何人提供示例
由于
答案 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中使用透明显示从上到下的渐变效果:
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>