Android开发 GradientDrawable详解

发布时间:2022-06-08 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Android开发 GradientDrawable详解脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

前言

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

 

GradientDrawable在AndROId中便是shape标签的代码实现,利用GradientDrawable也可以创建出各种形状。 GradientDrawable 支持渐变色的Drawable,与shapeDrawable在画型上是类似的,多了支持渐变色。代码上的GradientDrawable比在xML里的shape下gradient属性强大的多,因为shape下gradient属性只支持三色阶渐变,而GradientDrawable可以有更多的色阶渐变。

GradientDrawable使用方法1. 获取控件的shape并进行动态修改:既然GradientDrawable是shape的动态实现,那么他就可以通过动态的获取控件的shape获取实例并进行修改,比如我的上一篇文章android 动态生成shape以及动态的改变shape颜色

2. 通过代码动态创建:

//什么都不指定默认为矩形
GradientDrawable background = new GradientDrawable();
background.setColor(Color.GREEN);
view.setBackgroundDrawable(background);

 

 如果想要设置形状的话可以通过setShape(int shape) 方法来进行设置,这里一共可以设置四种形状:

GradientDrawable.RECTANGLE:矩形
GradientDrawable.OVAL:椭形
GradientDrawable.LINE:一条线
GradientDrawable.RING:环形(环形试了好久不知为何画不出来)

 

这里用GradientDrawable.OVAL来实验一下:

GradientDrawable background = new GradientDrawable();
background.setColor(Color.GREEN);
background.setShape(GradientDrawable.OVAL);
view.setBackgroundDrawable(background);

 

 如果想让效果更加丰富一些添加描边或者颜色渐变:

GradientDrawable background = new GradientDrawable();
background.setShape(GradientDrawable.OVAL);
background.setstroke(10,Color.red);//设置度为10px的红色描边
background.setGradientType(GradientDrawable.LINEAR_GRADIENT);//设置线性渐变,除此之外还有:GradientDrawable.SWEEP_GRADIENT(扫描式渐变),GradientDrawable.RADIAL_GRADIENT(圆形渐变)
background.setColors(new int[]{Color.RED,Color.BLUE});//增加渐变效果需要使用setColors方法来设置颜色(中间可以增加多个颜色值)
view.setBackgroundDrawable(background);

 

 

画线

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

效果图:

Android开发 GradientDrawable详解

画虚线

        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详解

画圆

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

效果图:

Android开发 GradientDrawable详解

圆环

        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详解

圆角矩形

 
        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详解

虚线矩形

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

效果图:

Android开发 GradientDrawable详解

颜色渐变

线性渐变

 
        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详解

改变线性渐变方向

 
        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详解

径渐变

 
        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详解

扫描渐变

 
        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详解

gradientDrawable.setDITher(true);

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

 

透明度

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

Android开发 GradientDrawable详解

脚本宝典总结

以上是脚本宝典为你收集整理的Android开发 GradientDrawable详解全部内容,希望文章能够帮你解决Android开发 GradientDrawable详解所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。