我知道可以制作一个类似这样的形状:
![enter image description here](https://istack.dev59.com/qXyrP.webp)
但我不知道如何开始。我能把它做成一个形状吗?还是我需要做其他事情?
敬礼
我知道可以制作一个类似这样的形状:
但我不知道如何开始。我能把它做成一个形状吗?还是我需要做其他事情?
敬礼
哦,看来我错了——渐变不是问题:
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.LinearGradient;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.Shader;
import android.view.View;
public class ButtonShadow extends View {
public ButtonShadow(Context context)
{
super(context);
}
@Override
public void onDraw(Canvas canvas)
{
RectF space = new RectF(this.getLeft(), this.getTop(), this.getRight(), this.getBottom());
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setShader(new LinearGradient(0, getWidth(), 0, 0, Color.BLACK, Color.WHITE, Shader.TileMode.MIRROR));
canvas.drawArc(space, 180, 360, true, paint);
Rect rect = new Rect(this.getLeft(),this.getTop() + (this.getHeight() / 2),this.getRight(),this.getBottom());
canvas.drawRect(rect, paint);
}
}
想要了解更多关于渐变填充的内容,请看这里:如何在安卓中使用线性渐变来填充路径?
以下是与您的图片相符的代码:
custom_layer_list.xml
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@drawable/topCircular" />
<item
android:drawable="@drawable/rect"
android:top="20dp" />
</layer-list>
topCircular.xml
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid
android:color="#000000" />
<corners
android:topLeftRadius="25dp"
android:topRightRadius= "25dp" />
</shape>
rect.xml
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid
android:color="#000000" />
</shape>
你只能用形状来完成它:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#000000" />
<padding android:left="7dp"
android:top="7dp"
android:right="7dp"
android:bottom="7dp" />
<corners
android:topLeftRadius="90dip"
android:topRightRadius="90dip"
android:bottomLeftRadius="0dip"
android:bottomRightRadius="0dip" />
</shape>
您可以在形状文件中使用xml定义它,但是制作一个简单的9 patch图形可能会更容易,然后您可以轻松地自定义曲线和直线段将被拉伸的方式和位置。
有关更多信息,请参见http://developer.android.com/tools/help/draw9patch.html。
编辑
有关形状的更多信息,请参见此处:http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape。