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

所属分类: 软件编程 / Android 阅读数: 134
收藏 0 赞 0 分享

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网络编程之获取网络上的Json数据实例

这篇文章主要介绍了Android网络编程之获取网络上的Json数据实例,本文用完整的代码实例讲解了在Android中读取网络中Json数据的方法,需要的朋友可以参考下
收藏 0 赞 0 分享

Android中的windowSoftInputMode属性详解

这篇文章主要介绍了Android中的windowSoftInputMode属性详解,本文对windowSoftInputMode的9个属性做了详细总结,需要的朋友可以参考下
收藏 0 赞 0 分享

Android网络编程之UDP通信模型实例

这篇文章主要介绍了Android网络编程之UDP通信模型实例,本文给出了服务端代码和客户端代码,需要的朋友可以参考下
收藏 0 赞 0 分享

Android中使用ListView实现漂亮的表格效果

这篇文章主要介绍了Android中使用ListView实现漂亮的表格效果,本文用详细的代码实例创建了一个股票行情表格,需要的朋友可以参考下
收藏 0 赞 0 分享

Android中刷新界面的二种方法

这篇文章主要介绍了Android中刷新界面的二种方法,本文使用Handler、postInvalidate两种方法实现界面刷新,需要的朋友可以参考下
收藏 0 赞 0 分享

Android SDK三种更新失败及其解决方法

这篇文章主要介绍了Android SDK三种更新失败及其解决方法,需要的朋友可以参考下
收藏 0 赞 0 分享

Android学习笔记——Menu介绍(一)

Android3.0(API level 11)开始,Android设备不再需要专门的菜单键。随着这种变化,Android app应该取消对传统6项菜单的依赖。取而代之的是提供anction bar来提供基本的用户功能
收藏 0 赞 0 分享

Android学习笔记——Menu介绍(二)

这次将继续上一篇文章没有讲完的Menu的学习,上下文菜单(Context menu)和弹出菜单(Popup menu)
收藏 0 赞 0 分享

Android学习笔记——Menu介绍(三)

今天继续昨天没有讲完的Menu的学习,主要是Popup Menu的学习,需要的朋友可以参考下
收藏 0 赞 0 分享

Android显示网络图片实例

这篇文章主要介绍了Android显示网络图片的方法,以实例形式展示了Android程序显示网络图片的方法,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多