Android Canvas 绘制两端透明中间不透明的曲线
在 Android 开发中,要实现两端逐渐透明、中间完全不透明的曲线,可以使用 RadialGradient 来实现。RadialGradient 是一个放射渐变,可以创建从中心向外辐射的颜色渐变效果。
下面是一个简单的示例代码,实现了一个红色到绿色的渐变曲线:
public class MyView extends View {
private Paint mPaint;
public MyView(Context context) {
super(context);
init();
}
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public MyView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
mPaint = new Paint();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int width = getWidth();
int height = getHeight();
int centerX = width / 2;
int centerY = height / 2;
int startColor = Color.RED;
int endColor = Color.GREEN;
float[] positions = {0, 0.5f, 1};
int[] colors = {startColor, startColor, endColor};
// 创建一个放射渐变
RadialGradient gradient = new RadialGradient(centerX, centerY, centerX, colors, positions, Shader.TileMode.CLAMP);
// 设置画笔的渐变
mPaint.setShader(gradient);
// 绘制曲线
Path path = new Path();
path.moveTo(0, centerY);
path.quadTo(centerX, height, width, centerY);
canvas.drawPath(path, mPaint);
}
}
在上述代码中,我们首先创建了一个 RadialGradient 对象,使用了两种颜色,起始颜色为红色,结束颜色为绿色。通过设置 float 数组 positions 来指定颜色的分布位置,其中 0 表示起始位置,0.5 表示中间位置,1 表示结束位置。然后使用这个 RadialGradient 对象设置画笔的渐变。
通过创建一个 Path 对象来绘制曲线,使用 canvas 的 drawPath 方法进行绘制。在这个示例中,我们使用了二次贝塞尔曲线来绘制曲线,可以根据需要调整曲线的形状。
最后,在 Activity 中使用这个自定义的 View 进行绘制:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyView myView = findViewById(R.id.my_view);
}
}
在布局文件中添加 MyView 即可:
<com.example.myapplication.MyView
android:id="@+id/my_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
通过这种方式,我们可以在 canvas 上绘制出两端逐渐透明、中间完全不透明的曲线。
原文地址: https://www.cveoy.top/t/topic/z0l 著作权归作者所有。请勿转载和采集!