这篇文章主要为大家详细介绍了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处理视图圆角和色彩的工具类
基础教程推荐
猜你喜欢
- iOS开发教程之XLForm的基本使用方法 2023-05-01
- Android中的webview监听每次URL变化实例 2023-01-23
- Android多返回栈技术 2023-04-15
- 解决Android Studio突然不显示logcat日志的问题 2023-02-04
- Flutter绘图组件之CustomPaint使用详解 2023-05-12
- Android开发使用RecyclerView添加点击事件实例详解 2023-06-15
- IOS应用内跳转系统设置相关界面的方法 2022-11-20
- android studio按钮监听的5种方法实例详解 2023-01-12
- IOS 播放系统提示音使用总结(AudioToolbox) 2023-03-01
- Flutter手势密码的实现示例(附demo) 2023-04-11
