Android开发 GradientDrawable详解

摘要:
绘制一条线GradientDrawablegradientDrawable=newGradientDrawable();绘制一个圆GradientDrawablegradientDrawable=newGradientDrawable();颜色:黄色);gradientDrawable.setColor(Color.RED);颜色.蓝色};
前言

  GradientDrawable 支持渐变色的Drawable,与shapeDrawable在画型上是类似的,多了支持渐变色。代码上的GradientDrawable比在xml里的shape下gradient属性强大的多,因为shape下gradient属性只支持三色阶渐变,而GradientDrawable可以有更多的色阶渐变。

画线
        GradientDrawable gradientDrawable = new GradientDrawable();
        gradientDrawable.setShape(GradientDrawable.LINE);
        gradientDrawable.setStroke(5, Color.YELLOW);//线的宽度 与 线的颜色
        mTextView.setBackground(gradientDrawable);

效果图:

Android开发 GradientDrawable详解第1张

画虚线
        mTextView.setLayerType(View.LAYER_TYPE_SOFTWARE,null); //要显示虚线一定要关闭硬件加速
        GradientDrawable gradientDrawable = new GradientDrawable();
        gradientDrawable.setShape(GradientDrawable.LINE);
        gradientDrawable.setStroke(1, Color.BLACK, 10, 10);//第一个参数为线的宽度  第二个参数是线的颜色 第三个参数是虚线段的长度 第四个参数是虚线段之间的间距长度
        mTextView.setBackground(gradientDrawable);

也可以在布局里关闭指定view的硬件加速

android:layerType="software"

效果图:

Android开发 GradientDrawable详解第2张

画圆
        GradientDrawable gradientDrawable = new GradientDrawable();
        gradientDrawable.setShape(GradientDrawable.OVAL);
        gradientDrawable.setColor(Color.BLUE);
        gradientDrawable.setSize(50,50);
        mTextView.setBackground(gradientDrawable);

效果图:

Android开发 GradientDrawable详解第3张

画圆环
        GradientDrawable gradientDrawable = new GradientDrawable();
        gradientDrawable.setShape(GradientDrawable.OVAL);
        gradientDrawable.setColor(Color.BLUE);
        gradientDrawable.setStroke(10,Color.YELLOW);
        gradientDrawable.setSize(50,50);
        mTextView.setBackground(gradientDrawable);

效果图:

Android开发 GradientDrawable详解第4张

圆角矩形
        GradientDrawable gradientDrawable = new GradientDrawable();
        gradientDrawable.setShape(GradientDrawable.RECTANGLE);
        gradientDrawable.setColor(Color.RED);
        gradientDrawable.setStroke(10,Color.BLUE);
        gradientDrawable.setCornerRadius(10);
        gradientDrawable.setSize(50,50);
        mTextView.setBackground(gradientDrawable);

效果图:

Android开发 GradientDrawable详解第5张

虚线矩形
        GradientDrawable gradientDrawable = new GradientDrawable();
        gradientDrawable.setShape(GradientDrawable.LINEAR_GRADIENT);
        gradientDrawable.setStroke(1, Color.GREEN,30, 30);
        mTextView.setBackground(gradientDrawable);

效果图:

Android开发 GradientDrawable详解第6张

颜色渐变

线性渐变

        int[] colors = {Color.YELLOW, Color.GREEN, Color.BLUE};
        GradientDrawable gradientDrawable = new GradientDrawable();
        gradientDrawable.setShape(GradientDrawable.RECTANGLE);
        gradientDrawable.setColors(colors); //添加颜色组
       gradientDrawable.setGradientType(GradientDrawable.LINEAR_GRADIENT);//设置线性渐变
        gradientDrawable.setSize(50,50);
        mTextView.setBackground(gradientDrawable);

效果图:

Android开发 GradientDrawable详解第7张

改变线性渐变方向

        int[] colors = {Color.YELLOW, Color.GREEN, Color.BLUE};
        GradientDrawable gradientDrawable = new GradientDrawable();
        gradientDrawable.setShape(GradientDrawable.RECTANGLE);
        gradientDrawable.setColors(colors); //添加颜色组
        gradientDrawable.setGradientType(GradientDrawable.LINEAR_GRADIENT);//设置线性渐变
        gradientDrawable.setOrientation(GradientDrawable.Orientation.RIGHT_LEFT);//设置渐变方向
        gradientDrawable.setSize(50,50);
        mTextView.setBackground(gradientDrawable);

效果图:

Android开发 GradientDrawable详解第8张

半径渐变

        int[] colors = {Color.YELLOW, Color.GREEN, Color.BLUE};
        GradientDrawable gradientDrawable = new GradientDrawable();
        gradientDrawable.setShape(GradientDrawable.RECTANGLE);
        gradientDrawable.setColors(colors); //添加颜色组
        gradientDrawable.setGradientType(GradientDrawable.RADIAL_GRADIENT);//设置半径渐变
        gradientDrawable.setGradientRadius(50);//渐变的半径值
        gradientDrawable.setSize(50,50);
        mTextView.setBackground(gradientDrawable);

效果图:

Android开发 GradientDrawable详解第9张

扫描渐变

        int[] colors = {Color.YELLOW, Color.GREEN, Color.BLUE};
        GradientDrawable gradientDrawable = new GradientDrawable();
        gradientDrawable.setShape(GradientDrawable.RECTANGLE);
        gradientDrawable.setColors(colors); //添加颜色组
        gradientDrawable.setGradientType(GradientDrawable.SWEEP_GRADIENT);//设置扫描渐变
        gradientDrawable.setGradientCenter(0.5f,0.5f);//渐变中心点
        gradientDrawable.setSize(50,50);
        mTextView.setBackground(gradientDrawable);

Android开发 GradientDrawable详解第10张

防抖
gradientDrawable.setDither(true);

可以让渐变的时候颜色阶梯降低,变得更柔和

透明度
        GradientDrawable gradientDrawable = new GradientDrawable();
        gradientDrawable.setShape(GradientDrawable.RECTANGLE);
        gradientDrawable.setColor(Color.YELLOW); 
        gradientDrawable.setAlpha(70);//设置透明度
        mTextView.setBackground(gradientDrawable);

Android开发 GradientDrawable详解第11张

免责声明:文章转载自《Android开发 GradientDrawable详解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Oracle SqlPlus导出查询结果让WPF的Popup不总置顶的解决方案下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

svg 直线水平渐变为什么没有效果,必须得是一条倾斜的不水平的直线才有渐变效果呢??

参考:https://blog.csdn.net/u012260672/article/details/80905631 对x1=x2(没有宽度)或者y1=y2(没有高度)的直线(line以及path,如果,stroke里使用的是渐变效果,那么,在各种浏览器上都会出现同一个BUG,这条线会消失。关键字objectBoundingBox这玩意儿,在元素没有宽...

【LinearGradientBrush】线性渐变笔刷

本示例演示如何使用 LinearGradientBrush 类来绘制带有线性渐变的区域。在下面的示例中,Rectangle 的Fill 是用从黄色依次过渡到红色、蓝色和浅绿色的对角线性渐变来绘制的。 XAML <!-- This rectangle is painted with a diagonal linear gradient. -->...