Android处理视图圆角和色彩的工具类

 更新时间:2020年07月22日 17:09:11   作者:优秀的哥斯拉  
这篇文章主要为大家详细介绍了Android处理视图圆角和色彩的工具类,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

Android代码处理视图圆角和色彩的工具类,供大家参考,具体内容如下

一直都用的.XML文件处理圆角与色彩或色彩渐变,觉得很不方便,后来发现了GradientDrawable这个类,就整了个工具类,用起来觉得挺方便

效果图:

下面贴代码:

public class DrawCorner {
 
 /**
 * 默认绘制圆角函数,背景白色,半径20
 * */
 public static GradientDrawable drawCorner() {
 GradientDrawable drawable = new GradientDrawable();
 drawable.setCornerRadius(20);
 drawable.setColor(Color.WHITE);
 return drawable;
 }
 
 /**
 * 默认绘制圆角函数,背景白色
 * 参数:
 * radius:圆角半径
 * */
 public static GradientDrawable drawCorner(int radius) {
 GradientDrawable drawable = new GradientDrawable();
 drawable.setCornerRadius(radius);
 drawable.setColor(Color.WHITE);
 return drawable;
 }
 
 /**
 * 默认绘制圆角函数,背景白色
 * 参数:
 * radii:四个圆角半径,依次是左上x、左上y、右上x、右上y、右下x、右下y、左下x、左下y
 * */
 public static GradientDrawable drawCorner(float[] radii) {
 if (radii == null || radii.length != 8) {
 radii = new float[]{0, 0, 0, 0, 0, 0, 0, 0};
 }
 GradientDrawable drawable = new GradientDrawable();
 drawable.setCornerRadii(radii);
 drawable.setColor(Color.WHITE);
 return drawable;
 }
 
 /**
 * 默认绘制圆角函数
 * 参数:
 * radius:圆角半径
 * color:背景色
 * */
 public static GradientDrawable drawCorner(int radius, int color) {
 GradientDrawable drawable = new GradientDrawable();
 drawable.setCornerRadius(radius);
 drawable.setColor(color);
 return drawable;
 }
 
 /**
 * 默认绘制圆角函数
 * 参数:
 * radii:四个圆角半径,依次是左上x、左上y、右上x、右上y、右下x、右下y、左下x、左下y
 * color:背景色
 * */
 public static GradientDrawable drawCorner(float[] radii, int color) {
 if (radii == null || radii.length != 8) {
 radii = new float[]{0, 0, 0, 0, 0, 0, 0, 0};
 }
 GradientDrawable drawable = new GradientDrawable();
 drawable.setCornerRadii(radii);
 drawable.setColor(color);
 return drawable;
 }
 
 /**
 * 默认绘制圆角函数
 * 参数:
 * radius:圆角半径
 * colors:渐变背景色
 * */
 public static GradientDrawable drawCorner(int radius, int[] colors) {
 GradientDrawable drawable = new GradientDrawable();
 drawable.setCornerRadius(radius);
 drawable.setGradientType(GradientDrawable.LINEAR_GRADIENT);
 drawable.setColors(colors);
 return drawable;
 }
 
 /**
 * 默认绘制圆角函数
 * 参数:
 * radii:四个圆角半径,依次是左上x、左上y、右上x、右上y、右下x、右下y、左下x、左下y
 * colors:渐变背景色
 * */
 public static GradientDrawable drawCorner(float[] radii, int[] colors) {
 if (radii == null || radii.length != 8) {
 radii = new float[]{0, 0, 0, 0, 0, 0, 0, 0};
 }
 GradientDrawable drawable = new GradientDrawable();
 drawable.setCornerRadii(radii);
 drawable.setGradientType(GradientDrawable.LINEAR_GRADIENT);
 drawable.setColors(colors);
 return drawable;
 }
 
 /**
 * 默认绘制圆角函数
 * 参数:
 * radius:圆角半径
 * colors:渐变背景色
 * orientation:渐变类型( 0:上到下,1:右上到左下,2:右到左,3:右下到左上,4:下到上,5:左下到右上,6:左到右,7:左上到右下 )
 * */
 public static GradientDrawable drawCorner(int radius, int[] colors, int orientation) {
 GradientDrawable drawable = new GradientDrawable();
 drawable.setCornerRadius(radius);
 drawable.setGradientType(GradientDrawable.LINEAR_GRADIENT);
 switch (orientation) {
 case 0:
 drawable.setOrientation(GradientDrawable.Orientation.TOP_BOTTOM);
 break;
 case 1:
 drawable.setOrientation(GradientDrawable.Orientation.TR_BL);
 break;
 case 2:
 drawable.setOrientation(GradientDrawable.Orientation.RIGHT_LEFT);
 break;
 case 3:
 drawable.setOrientation(GradientDrawable.Orientation.BR_TL);
 break;
 case 4:
 drawable.setOrientation(GradientDrawable.Orientation.BOTTOM_TOP);
 break;
 case 5:
 drawable.setOrientation(GradientDrawable.Orientation.BL_TR);
 break;
 case 6:
 drawable.setOrientation(GradientDrawable.Orientation.LEFT_RIGHT);
 break;
 case 7:
 drawable.setOrientation(GradientDrawable.Orientation.TL_BR);
 break;
 }
 drawable.setColors(colors);
 return drawable;
 }
 
 /**
 * 默认绘制圆角函数
 * 参数:
 * radii:四个圆角半径,依次是左上、右上、右下、左下
 * colors:渐变背景色
 * orientation:渐变类型( 0:上到下,1:右上到左下,2:右到左,3:右下到左上,4:下到上,5:左下到右上,6:左到右,7:左上到右下 )
 * */
 public static GradientDrawable drawCorner(float[] radii, int[] colors, int orientation) {
 if (radii == null || radii.length != 8) {
 radii = new float[]{0, 0, 0, 0, 0, 0, 0, 0};
 }
 GradientDrawable drawable = new GradientDrawable();
 drawable.setCornerRadii(radii);
 drawable.setGradientType(GradientDrawable.LINEAR_GRADIENT);
 switch (orientation) {
 case 0:
 drawable.setOrientation(GradientDrawable.Orientation.TOP_BOTTOM);
 break;
 case 1:
 drawable.setOrientation(GradientDrawable.Orientation.TR_BL);
 break;
 case 2:
 drawable.setOrientation(GradientDrawable.Orientation.RIGHT_LEFT);
 break;
 case 3:
 drawable.setOrientation(GradientDrawable.Orientation.BR_TL);
 break;
 case 4:
 drawable.setOrientation(GradientDrawable.Orientation.BOTTOM_TOP);
 break;
 case 5:
 drawable.setOrientation(GradientDrawable.Orientation.BL_TR);
 break;
 case 6:
 drawable.setOrientation(GradientDrawable.Orientation.LEFT_RIGHT);
 break;
 case 7:
 drawable.setOrientation(GradientDrawable.Orientation.TL_BR);
 break;
 }
 drawable.setColors(colors);
 return drawable;
 }
 
}

调用方式很简单,就是

View.setBackground(DrawCorner.drawCorner);

就行了

例如:

TextView textView = findViewById(R.id.test);
textView.setBackground(DrawCorner.drawCorner());

Github地址

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • android panellistview 圆角实现代码

    android panellistview 圆角实现代码

    android panellistview 圆角是每一个android开发者都具备的一项,对于新手朋友来说可能有点难度,接下来将详细介绍,需要了解的朋友可以参考下
    2012-12-12
  • Kotlin创建一个好用的协程作用域

    Kotlin创建一个好用的协程作用域

    这篇文章主要介绍了Kotlin创建一个好用的协程作用域,kotlin中使用协程,是一定要跟协程作用域一起配合使用的,否则可能协程的生命周期无法被准确控制,造成内存泄漏或其他问题
    2022-07-07
  • Android 快速使用正则表达式,校验身份证号的实例

    Android 快速使用正则表达式,校验身份证号的实例

    下面小编就为大家分享一篇Android 快速使用正则表达式,校验身份证号的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • MVVMLight项目的绑定及各种使用场景示例分析

    MVVMLight项目的绑定及各种使用场景示例分析

    这篇文章主要为大家介绍了MVVMLight项目中的绑定及绑定的各种使用场景示例源码分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步除夕快乐
    2022-01-01
  • com.android.support版本冲突解决方法

    com.android.support版本冲突解决方法

    在本篇文章里小编给大家整理的是关于com.android.support版本冲突解决方法以及相关知识点,需要的朋友们学习下。
    2019-09-09
  • Android中获得手机屏幕大小实现代码

    Android中获得手机屏幕大小实现代码

    这篇文章主要介绍了Android中获得手机屏幕大小实现代码,Android开发中经常需要获得屏幕的宽高,本文直接封装成一个工具类,需要的朋友可以参考下
    2015-06-06
  • Android事件处理的两种方式详解

    Android事件处理的两种方式详解

    事件是一种有用来收集用户与应用程序互动数据的互动组件,如按键或触摸屏等放置事件,因为每个事件从Android框架维护事件队列先入先出(FIFO)基础上的队列。可以在程序中捕获这些事件,按要求并采取适当的动作
    2023-02-02
  • Android中Image的简单实例详解

    Android中Image的简单实例详解

    这篇文章主要为大家详细介绍了Android中Image的简单实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • 解决Android横竖屏切换数据丢失问题的方法

    解决Android横竖屏切换数据丢失问题的方法

    这篇文章主要为大家详细介绍了Android横竖屏切换数据丢失问题的解决方法,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • Android使用http请求手机号码归属地查询代码分享

    Android使用http请求手机号码归属地查询代码分享

    这篇文章主要介绍了Android使用http请求手机号码归属地查询代码分享的相关资料,需要的朋友可以参考下
    2016-06-06

最新评论