在 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 上绘制出两端逐渐透明、中间完全不透明的曲线。

Android Canvas 绘制两端透明中间不透明的曲线

原文地址: https://www.cveoy.top/t/topic/z0l 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录