android 动态渐变,Android 动态修改渐变 GradientDrawable
Android 绘图学习
1GradientDrawable 简介
以前的文章写过 Android中渐变实现方式
前面的文章 讲解了如何实现渐变类似LinearGradient,SweepGradient是用于Paint的setShader的,可以通过定义xml的shape,内部利用gradient标签,将shape作为view的背景快速实现渐变。但当我们需要动态修改时,就需要用到GradientDrawable,它和xml方式对应,可以快速生成可以作为view背景的渐变drawable。
构造函数:
两种生成方式:
public GradientDrawable() ;
/**
* Create a new gradient drawable given an orientation and an array
* of colors for the gradient.
*/
public GradientDrawable(Orientation orientation, @ColorInt int[] colors) ;
参数说明:
Orientation:渐变方向,我们知道xml方式的渐变的方向的控制主要利用角度, 渐变的方向 默认为0 从做向右 ,90时从下向上 必须为45的整数倍。
Orientation方向定义如下,很简单就不翻译中文了。
public enum Orientation {
/** draw the gradient from the top to the bottom */
TOP_BOTTOM,
/** draw the gradient from the top-right to the bottom-left */
TR_BL,
/** draw the gradient from the right to the left */
RIGHT_LEFT,
/** draw the gradient from the bottom-right to the top-left */
BR_TL,
/** draw the gradient from the bottom to the top */
BOTTOM_TOP,
/** draw the gradient from the bottom-left to the top-right */
BL_TR,
/** draw the gradient from the left to the right */
LEFT_RIGHT,
/** draw the gradient from the top-left to the bottom-right */
TL_BR,
}
colors:渐变的颜色数组。
2 xml实现渐变
android:angle="0"
android:endColor="#FFC54E"
android:startColor="#FF9326"
android:type="linear" />
android:bottomLeftRadius="25dp"
android:bottomRightRadius="25dp"
android:topLeftRadius="25dp"
android:topRightRadius="25dp" />
3GradientDrawable 实现渐变
**setCornerRadii(): **设置shape的圆角,大小为8(可以大于8),共四对参数,分别表示top-left, top-right, bottom-right, bottom-left的圆角。
setCornerRadius(roundRadius): 设置圆角,四个圆角大小相同。
setColor(fillColor): 设置填充色,此时会使用设置的颜色,而不会使用渐变色
setStroke(strokeWidth, strokeColor): 设置边框宽度和颜色
setGradientType(GradientDrawable.RECTANGLE): 设置渐变形状,包括RECTANT,OVAL,LINE,RING
setGradientCenter(float x, float y): 渐变中心坐标
setOrientation(GradientDrawable.Orientation orientation):设置渐变方向,包括从上到下,从左到右,从下到上,从右到左
setColors(int[] colors):设置渐变的颜色数组
inflate(Resources r, XmlPullParser parser, AttributeSet attrs, Resources.Theme theme)
从xml文件中加载得到drawable
实例代码:
tv = findViewById(R.id.tv);
int[] colors = {0xFFFF9326,0xFFFFC54E};
GradientDrawable drawable = new GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT,colors);
drawable.setCornerRadius(25);
drawable.setGradientType(GradientDrawable.RECTANGLE);
tv.setBackground(drawable);
android 动态渐变,Android 动态修改渐变 GradientDrawable相关推荐
- 【Android 逆向】Android 进程代码注入原理 ( 注入本质 | 静态注入和动态注入 | 静态注入两种方式 | 修改动态库重打包 | 修改 /data/app/xx/libs 动态库 )
文章目录 一.注入本质 二.静态注入和动态注入 三.静态注入两种方式 ( 修改动态库重打包 | 修改 /data/app/packageName/libs/ 下的动态库 ) 一.注入本质 进程注入本质 ...
- 【Android 逆向】修改运行中的 Android 进程的内存数据 ( 运行环境搭建 Android 模拟器安装 | 拷贝 Android 平台可执行文件和动态库到 /data/system )
文章目录 一.运行环境搭建 Android 模拟器安装 二.拷贝 Android 平台可执行文件和动态库到 /data/system 目录下 一.运行环境搭建 Android 模拟器安装 使用低版本的 ...
- 【Android 逆向】逆向修改游戏应用 ( 分析应用结构 | 定位动态库位置 | 定位动态库中的修改点 | 修改动态库 | 重打包 )
文章目录 一.应用结构分析 二.定位动态库位置 三.定位动态库中的修改点 四.修改动态库 五.重打包 一.应用结构分析 分析上一篇博客 [Android 逆向]逆向修改游戏应用 ( APK 解析工具 ...
- android开发步步为营之90:android图片处理技术之三(Gradient渐变图片的绘制)
我想大家在开发的时候,经常会看到UED会设计渐变颜色的产品需求,当然如果图片不需要动态更换,直接使用UED设计的渐变色的图片就可以了,但是很多时候,像我们最近项目里面,就有根据不同的皮肤,渐变色是不一 ...
- 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 获取注入的 libbridge.so 动态库中的 load 函数地址 并 通过 远程调用 执行该函数 )
文章目录 一.dlsym 函数简介 二.获取 目标进程 linker 中的 dlsym 函数地址 三.远程调用 目标进程 linker 中的 dlsym 函数 获取 注入的 libbridge.so ...
- 【Android 逆向】Android 逆向方法 ( 静态逆向解析 | 函数调用分析 | 动态运行跟踪 | 运行日志分析 | 文件格式解析 | 敏感信息分析 | 网络信息监控 | 环境伪装模拟 )
文章目录 一.Android 逆向方法 1.静态逆向解析 2.函数调用分析 3.动态运行跟踪 4.运行日志分析 5.文件格式解析 6.敏感信息分析 7.网络信息监控 8.软件动态调试 9.环境伪装模拟 ...
- 【Android RTMP】Android Camera 视频数据采集预览 ( 图像传感器方向设置 | Camera 使用流程 | 动态权限申请 )
文章目录 安卓直播推流专栏博客总结 一. Camera 传感器方向简介 二. Camera 图像传感器横向显示数据 三. Camera 图像传感器纵向显示数据 四. 设置 Camera 预览数据方向 ...
- 020 Android之so文件动态调试
文章目录 ELF文件格式查看工具 so文件加载时的函数执行顺序 so文件动态调试 so文件调试技巧 使用ida动态调试的那些坑 进程显示不全 illegal segment bitness more ...
- android fragment动态加载,动态添加Fragment
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 动态添加Fragment 在程序运行时, 根据具体情况来动态地添加Fragment到Activity中. 1 新建 An ...
最新文章
- Code爱好者必去的20个网站(开源项目托管网站)
- linux偏向swap,solaris/linux 增加swap交换空间的方法
- [hdu5225][BC#40]Tom and permutation
- Guice系列之用户指南(五)
- 通用业务平台设计(一):概览
- 【译】Simple MySQL ORM for C
- 怎么获取股票大数据接口的方法介绍
- 算法快学笔记(一):算法入门
- mac 电脑 打开隐藏文件
- 永恒之黑(CVE-2020-0796 微软SMBv3协议远程代码执行漏洞)
- 数据库管理员、系统分析员、数据库设计人员,应用程序员的职责是什么?
- java 模板类 mock_mockj: 生成mock数据的利器,按照规则模板生成 mock 数据,mockjs的java实现。同时内置随机 random 一个对象的功能...
- 赛尔号桌面版_赛尔号电脑版下载 赛尔号电脑版下载
- svn多分支合并主干冲突 svn Working copy and merge source not ready for reintegration
- 山东大学中外合作计算机专业,山东大学威海分校计算机专业
- STM32F407 SPI SD卡驱动的验证
- JavaScript基础——第五章,jQuery与JavaScript
- 江苏大学 计算机网络 期末/考研复试 复习
- 3D 渲染软件市场增长迅速的原因
- canvas.drawArc
热门文章
- 修改Opera浏览器主页搜索引擎
- JVM总结之垃圾回收
- 大数据项目实践过程笔记
- c语言读png图片非隔行扫描,北京大学计算概论C语言经典课件Lecture4信息显示与多媒体技术.ppt...
- 支付API接口(支付宝支付接口微信支付接口)
- 硬盘分区修复和碎片整理命令
- 函数栈帧(详细图解)
- C++重点之“引用变量”用法
- c语言程序设计高速公路超速处罚,高速超速违章处理流程
- os.path.abspath和os.path.realpath区别