Android开发 GradientDrawable详解
前言
GradientDrawable 支持渐变色的Drawable,与shapeDrawable在画型上是类似的,多了支持渐变色。代码上的GradientDrawable比在xml里的shape下gradient属性强大的多,因为shape下gradient属性只支持三色阶渐变,而GradientDrawable可以有更多的色阶渐变。
画线
GradientDrawable gradientDrawable = new GradientDrawable();
gradientDrawable.setShape(GradientDrawable.LINE);
gradientDrawable.setStroke(, Color.YELLOW);//线的宽度 与 线的颜色
mTextView.setBackground(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"
效果图:
画圆
GradientDrawable gradientDrawable = new GradientDrawable();
gradientDrawable.setShape(GradientDrawable.OVAL);
gradientDrawable.setColor(Color.BLUE);
gradientDrawable.setSize(50,50);
mTextView.setBackground(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);
效果图:
圆角矩形
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);
效果图:
虚线矩形
GradientDrawable gradientDrawable = new GradientDrawable();
gradientDrawable.setShape(GradientDrawable.LINEAR_GRADIENT);
gradientDrawable.setStroke(1, Color.GREEN,30, 30);
mTextView.setBackground(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);
效果图:
改变线性渐变方向
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);
效果图:
半径渐变
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);
效果图:
扫描渐变
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);
防抖
gradientDrawable.setDither(true);
可以让渐变的时候颜色阶梯降低,变得更柔和
透明度
GradientDrawable gradientDrawable = new GradientDrawable();
gradientDrawable.setShape(GradientDrawable.RECTANGLE);
gradientDrawable.setColor(Color.YELLOW);
gradientDrawable.setAlpha(70);//设置透明度
mTextView.setBackground(gradientDrawable);
Android开发 GradientDrawable详解的更多相关文章
- Android开发实例详解之IMF(Android SDK Sample—SoftKeyboard)
本博前面的文章介绍了Android开发环境的搭建和模拟器的常用操作.本次,将以Android Sample中经典的SoftKeyboard项目为例,详细解析Android上一个小型项目的开发过程和注意 ...
- Android开发——AsyncTask详解
android提供AsynvTask,目的是为了不阻塞主线程(UI线程),且UI的更新只能在主线程中完成,因此异步处理是不可避免的. Android为了降低开发难度,提供了AsyncTask.Asyn ...
- Android开发 Context详解与类型 转载
转载地址:https://blog.csdn.net/guolin_blog/article/details/47028975 个人总结: Context分为 activity : activity其 ...
- Android开发 StateListDrawable详解
前言 StateListDrawable是与xml中的selector属性对应代码实现类,它需要配合GradientDrawable的使用,如果你还不了解GradientDrawable可以参考我的另 ...
- Android开发之详解五大布局
http://bbs.chinaunix.net/thread-3654213-1-1.html 为了适应各式各样的界面风格,Android系统提供了5种布局,这5种布局分别是: LinearLayo ...
- Android 开发 ConstraintLayout详解
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha3' app:layout_constraintHorizo ...
- Android 开发 HandlerThread详解 转载
转载请注明出处:http://blog.csdn.net/vnanyesheshou/article/details/75073307 对于Handler不太懂的可以参考我的这两篇文章: Androi ...
- Android开发 ShapeDrawable详解
前言 ShapeDrawable一开始我以为它是对应xml文件属性里的shape的画图,后来发现我错了... 其实ShapeDrawable更像是一共自由度更大跟偏向与实现draw()方法的一共图像绘 ...
- Android开发 layer-list详解
参考:https://blog.csdn.net/speverriver/article/details/80925686 挖坑,以后填坑
随机推荐
- docker 环境搭建步骤
配置CA: zhaoweipeng@bogon:~$ ls106 baseos.tar fabric-sdk fabric-sdk (1).tar fixture_106zhaoweipeng@bog ...
- KdPrint/DbgPrint and UNICODE_STRING/ANSI_STRING
typedef struct _UNICODE_STRING { USHORT Length; USHORT MaximumLength; PWSTR Buffer; } UNICODE_STRING ...
- AdaBoost笔记之通俗易懂原理介绍
转自:https://blog.csdn.net/px_528/article/details/72963977 写在前面 说到Adaboost,公式与代码网上到处都有,<统计学习方法>里 ...
- CocoaPods管理iOS项目 2018年11月06日
一.创建Test工程项目 二.打开终端 当前pod版本(1.6.0.beta.2最新版本2018年11月06日)和gem源路径(https://gems.ruby-china.com): 1.cd+当 ...
- React:styled-components
``是es6的Template Literals(模版字符串),许多人对这个一知半解,今天在这边总结下: `${expression}`(表达式插补) var x; var y; sth.innerH ...
- 2018北京网络赛 G The Mole /// 分块暴力 点线距离
题目大意: 给定n段线段 编号为1~n 接下来m个询问 给定一点 输出离该点最近的线段的最小编号(距离相等时取编号小的) 题解 大致就是 1.坐标范围为(0,2^16-1) 将坐标系划分为2^8*2^ ...
- __typeof与typeof
其实之前在stackoverflow就看过一篇讲的比较详细的, https://stackoverflow.com/questions/14877415/difference-between-type ...
- jdk1.8新特性学习
package com.xll.code.jdk1_8study; import com.xll.code.jdk1_8study.pojo.User; import org.junit.jupite ...
- Spark运行架构设计
- springboot EL @Value
一,springboot中 看一下代码: @Controller public class HelloController { //读取枚举值 @Value("#{T(com.example ...