Android颜色渐变(gradient)实现

XML

shape_gradient.xml

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

LinearGradient

/**
 @param x0           起点X坐标
 @param y0           起点Y坐标
 @param x1           终点X坐标
 @param y1           终点Y坐标
 @param  colors      所有颜色渐变集合
 @param  positions   可以设置均匀渐变,也可以按照自定义比例进行渐变,还可以为null。假设1为整个渐变的长度,我们设置的所有颜色(假设有4种颜色),都以同等的权重(渐变长度比例0.25:0.25:0.25:0.25)进行颜色渐变。
 @param  tile        着色器的不同模式
*/
public LinearGradient(float x0, float y0, float x1, float y1, int colors[], float positions[],
           TileMode tile)
public class MyView extends View {

    public MyView(Context context) {
        super(context);
    }

    public MyView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        //获取View的宽高
        int width = getWidth();
        int height = getHeight();

        int colorStart = getResources().getColor(R.color.colorStart);
        int colorCenter = getResources().getColor(R.color.colorCenter);
        int colorEnd = getResources().getColor(R.color.colorEnd);

        Paint paint = new Paint();
        LinearGradient backGradient = new LinearGradient(0, 0, 0, height, new int[]{colorStart, colorCenter ,colorEnd}, null, Shader.TileMode.CLAMP);
        paint.setShader(backGradient);
        canvas.drawRect(0, 0, width, height, paint);
    }
}
上一篇 Android基于模糊滤镜(MaskFilter)的阴影边框渐变效果
下一篇 Android RadioGroup流式布局及动态添加RadioButton
目录
文章列表
1 OpenLDAP + phpLDAPadmin
OpenLDAP + phpLDAPadmin
2
Android自定义Handler使用静态内部类避免内存泄漏
Android自定义Handler使用静态内部类避免内存泄漏
3
PHP接收异步通知参数示例
PHP接收异步通知参数示例
4
OKHttp3学习之九:文件上传(拦截器获取上传进度)
OKHttp3学习之九:文件上传(拦截器获取上传进度)
5
Java判断是否周末
Java判断是否周末
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。