android 背景切换动画效果代码,关于Android shape gradient背景渐变
百度后,发现渐变色不仅可以根据xml来实现,也可以用java代码来实现,由于目前没有那么多时间,只记录xml实现的方法;以后在记录Java实现的代码。
通过Shape gradient标签来实现
首先来看gradient标签所有的渐变属性:
android:angle="integer"
android:centerX="integer"
android:centerY="integer"
android:centerColor="integer"
android:endColor="color"
android:gradientRadius="integer"
android:startColor="color"
android:type=["linear" | "radial" | "sweep"]
android:useLevel=["true" | "false"] />
attributes:
android:angle Integer,代表渐变颜色的角度, 0 is left to right, 90 is bottom to top. 必须是45的整数倍. 默认是 0.该属性只有在type=linear情况下起作用,默认的type为linear。
android:startColor
Color. 颜色渐变的开始颜色
android:endColor
Color. 颜色渐变的结束颜色
android:centerColor
Color. 颜色渐变的中间颜色
android:centerX
Float.(0 - 1.0) 相对X的渐变位置。
android:centerY
Float.(0 - 1.0) 相对Y的渐变位置。
centerX和centerY,这两个属性只有在type不为linear情况下起作用。
android:gradientRadius
Float. 渐变颜色的半径,单位应该是像素点。需要 android:type="radial"。
如果android:type="radial",没有设置android:gradientRadius,将会报错,error inflating class。
android:type
linear : 线性渐变
radial:A radial gradient. 放射性渐变(圆形渐变),起始颜色从cenralX,centralY点开始。
sweep:A sweeping line gradient. 扫描式渐变(扇形渐变)。
android:useLevel
使用LevelListDrawable时就要设置为true,设为false时才有渐变效果。
gradient的属性介绍完毕,下面看一下各种渐变的效果。
渐变的效果:
线性渐变的xml代码:
android:centerColor="#00ff00"
android:endColor="#0000ff"
android:startColor="#ff0000"
android:type="linear"/>
放射性渐变xml代码:
android:centerColor="#00ff00"
android:endColor="#0000ff"
android:gradientRadius="100"
android:startColor="#ff0000"
android:type="radial"/>
扫描式渐变xml代码:
android:centerColor="#00ff00"
android:endColor="#0000ff"
android:startColor="#ff0000"
android:type="sweep"/>
三种渐变效果,如图所示:
通过GradientDrawable来实现
了解GradientDrawable类
查看文档的时候,先找到ShapeDrawable类,发现xml属性只有几个,如图所示:
和shape的xml属性对应不上,随后又找到GradientDrawable类,发现许多shape在xml中熟悉的属性,如图所示:
在源码中找到:
setStroke(int width, @ColorInt int color)
setStroke(int width, ColorStateList colorStateList)
setStroke(int width, @ColorInt int color, float dashWidth, float dashGap)
setStroke(int width, ColorStateList colorStateList, float dashWidth, float dashGap)
对应的是shape xml里面的stroke标签。这里由于只是了解颜色渐变相关,所以仅仅对相关的方法做分析。
下面来看GradientDrawable颜色渐变相关的方法
setGradientType(@GradientType int gradient)
setGradientType对应gradient标签android:type属性,对应的值有:LINEAR_GRADIENT,RADIAL_GRADIENT,SWEEP_GRADIENT;分别是:线性渐变,放射性渐变,扫描式渐变。
setColor(@ColorInt int argb)
setColors(@ColorInt int[] colors)
setColor(@Nullable ColorStateList colorStateList)
setColors设置渐变的颜色,包含一种,至少两种颜色等。对应gradient标签android:startColor、android:centerColor和android:endColor;但是java方法好像更加灵活,可以放多于三种颜色。
setOrientation(Orientation orientation)
setOrientation设置线性渐变的方向。对应gradient标签android:angle,可以取的值有:
/**
* 控制渐变相对于可绘制边界的方向
*/
public enum Orientation {
/**
* 从顶部到底部绘制渐变
*/
TOP_BOTTOM,
/**
* 绘制从右上角到左下角的渐变
*/
TR_BL,
/**
* 从右到左绘制渐变
*/
RIGHT_LEFT,
/**
* 从右下角到左上角绘制渐变
*/
BR_TL,
/**
* 从底部到顶部绘制渐变
*/
BOTTOM_TOP,
/**
* 从左下角到右上角绘制渐变
*/
BL_TR,
/**
* 从左到右绘制渐变
*/
LEFT_RIGHT,
/**
* 绘制从左上角到右下角的渐变
*/
TL_BR,
}
setGradientRadius(float gradientRadius)
setGradientRadius设置渐变的半径。,只有当渐变类型设置为{RADIAL_GRADIENT}时,半径才有效。对应gradient标签android:gradientRadius。
Java代码中设置渐变效果
线性渐变的xml代码:
int[] colors = new int[]{Color.parseColor("#FF0000"), Color.parseColor("#00FF00"),
Color.parseColor("#0000FF")};
GradientDrawable linearDrawable = new GradientDrawable();
linearDrawable.setOrientation(GradientDrawable.Orientation.LEFT_RIGHT);
linearDrawable.setColors(colors);
linearDrawable.setGradientType(GradientDrawable.LINEAR_GRADIENT);
mGradient1.setBackground(linearDrawable);
放射性渐变xml代码:
GradientDrawable radialDrawable = new GradientDrawable();
radialDrawable.setColors(colors);
radialDrawable.setShape(GradientDrawable.OVAL);
radialDrawable.setGradientRadius(10f);
radialDrawable.setGradientType(GradientDrawable.RADIAL_GRADIENT);
mGradient2.setBackground(radialDrawable);
扫描式渐变xml代码:
GradientDrawable sweepDrawable = new GradientDrawable();
sweepDrawable.setColors(colors);
sweepDrawable.setGradientType(GradientDrawable.SWEEP_GRADIENT);
mGradient3.setBackground(sweepDrawable);
java代码设置的三种渐变效果,如图所示:
相关文章:

Linux Ubuntu 自动登录
我一直在用Ubuntu发型版本的Linux系统,很喜欢把它做得更加的方便易用,特别是Ubuntu的Server版本,因为没有Desktop的 GUI界面,也没有自动登录设置,无法通过简单的点击鼠标方式来设置自动登录,在查阅了一些资…
Win10 下 RabbitMQ 的 安装 配置
记录下本人在win10环境下安装RabbitMQ的步骤,以作备忘。 第一步:下载并安装erlang 原因:RabbitMQ服务端代码是使用并发式语言Erlang编写的,安装Rabbit MQ的前提是安装Erlang。下载地址:http://www.erlang.org/download…

【组队学习】【32期】算法的应用
算法的应用 航路开辟者:肖然领航员:李铭哲航海士:伊雪、左凯文 基本信息 开源内容:https://github.com/datawhalechina/team-learning-program/tree/master/AlgorithmRunning内容属性:公测课程内容说明:…

android百度地图轨迹实现,android 获取GPS经纬度在百度地图上绘制轨迹
实现将一组GPS模块获取的经纬度数据在百度地图上绘制轨迹1.将经纬度转换成百度地图坐标/*** 标准的GPS经纬度坐标直接在地图上绘制会有偏移,这是测绘局和地图商设置的加密,要转换成百度地图坐标** return 百度地图坐标*/public GeoPoint gpsToBaidu(Stri…

设计模式笔记之十四 (命令模式)
命令模式 命令模式是一种比较容易理解的设计模式,顾名思义,就是调用者发一个命令,有人给做完就行了,无关乎怎么做,也无关乎谁做。 我们继续我们以往的方式:理论联系实践的方式来理解命令模式。 最近我们实验…

2021 线性代数 第五章 习题课
第5章 实对称矩阵与二次型 5.1 实对称矩阵的对角化(基础部分)5.1 实对称矩阵的对角化(提高部分)5.2 二次型及标准形(基础部分)5.2 二次型及标准形(提高部分)5.3 正定二次型与正定矩…

galaxy android 8,三星终于正式升级安卓8.0!Galaxy S8尝鲜
原标题:三星终于正式升级安卓8.0!Galaxy S8尝鲜经过长时间的测试,在友商陆续吃上奥利奥之后,三星终于开始向Galaxy S8/S8正式推送安卓8.0,也带来了新的Experience UX 9.0用户界面和诸多新功能。不过注意,首…

仿美团外卖的全栈项目(vue+node+mongodb)带支付-大三求实习
关于 2019届大三学生,前段时间一直想一个人单独开发一个较为完整的项目,在众多应用中,考虑之后选择了美团外卖来模仿,这段时间就利用课余时间进行开发,前端用vuevuexvue-routeraxios,因为需要用到定位和支付…

Task01:青少年软件编程(Scratch)等级考试模拟卷(一级)
电子学会 软件编程(图形化)一级训练营 试题来源 青少年软件编程(Scratch)等级考试试卷(一级)【2019.09】青少年软件编程(Scratch)等级考试试卷(一级)【2019…

CSS——float属性备忘笔记
通过指定CSS属性float的值,从而使元素向左或向右浮动,然后由后继元素向上移动以填补前面元素的浮动而空出的可用空间。CSS的float属性,作用就是改变块元素对象的默认显示方式,HTML标签设置了float属性之后,它将不再独自占据一行,从…

beats x连android手机吗,beats x 能连安卓手机吗?
1,手机打开蓝牙功能,进入搜索蓝牙耳机状态。2,当蓝牙耳机处于电源状态时,需要按下蓝牙耳机的开关按钮约5秒。3,直到指示灯是蓝色的,红灯闪烁并交替地松动。4,此时,蓝牙耳机和手机将进…

[置顶] Objective-C ,ios,iphone开发基础:命名规范
命名规范:http://bukkake.iteye.com/blog/695492 点击打开链接转载于:https://www.cnblogs.com/pangblog/p/3292256.html

Task02:青少年软件编程(Scratch)等级考试模拟卷(一级)
电子学会 软件编程(图形化)一级训练营 试题来源 青少年软件编程(Scratch)等级考试试卷(一级)【2019.09】青少年软件编程(Scratch)等级考试试卷(一级)【2019…

python 爬虫气象气象定时报 气象预警推送
"2018-04-09 14时""长沙市""10日(明天)""多云转雷阵雨""29℃""19℃""3-4级""11日(后天)""雷阵雨""27℃""20℃"…

右键脚本html,js实现右键自定义菜单
本文实例为大家分享了右键自定义菜单的具体代码,供大家参考,具体内容如下#menu {height: 200px;width: 50px;border: 1px solid gray;background-color: antiquewhite;padding: 10px;display: none;position: absolute;}ul,li {margin: 0;padding: 0;lis…

ogre3d环境配置与简单程序示例
SDK安装以及编译 1、下载SDK,地址如下 http://www.ogre3d.org/download/sdk 2、安装SDK,直接解压到相应目录,如D:/ogreSDK 3、我用的是1.8版本,打开SDK安装目录,如图: D:\Program Files\OgreSDK_vc10_v1-8-…

【组队学习】【32期】Linux实践
Linux实践 航路开辟者:刘羽中领航员:六一航海士:刘洋、王晓亮、陈玉立、六一 基本信息 开源内容:https://github.com/datawhalechina/team-learning-program/tree/master/LinuxPractice开源内容:https://shimo.im/d…

成为MySQL DBA 博客系列-数据库升级
数据库供应商通常每个月都会发布一些有bug /安全性修补程序的补丁,我们为什么要关心?新的版本可能对关于安全漏洞和黑客入侵系统的修复,所以除非安全性不被关注,否则您可能希望在您的系统上安装最新的安全修补程序。其中MySQL主要…

html中item属性,项目id(属性) | itemid (attribute)
项目id(属性) | itemid (attribute)itemid全局属性是某个项目的唯一全局标识符。itemid属性只能为既具有元素指定itemscope和itemtype属性。此外,itemid只能在具有itemscope相应属性的元素上指定itemtype或引用支持全局标识符的词汇表。itemtype全局标识符的确切含义…
程序员也想改 Lottie 动画?是的!
一、前言 Hi,大家好,我是承香墨影! Lottie 是 Airbnb 开源的一套跨平台的完整的动画效果解决方案,用过都说好。完全解耦开发人员和设计师,让设计师设计的动画,在程序中无缝还原,真是一旦拿起绝不…

poj 1698 Alice's Chance 最大流
题目:给出n部电影的可以在周几拍摄、总天数、期限,问能不能把n部电影接下来。 分析: 对于每部电影连上源点,流量为总天数。 对于每一天建立一个点,连上汇点,流量为为1。 对于每部电影,如果可以在…

为一月份开设的组队学习课程投票啦
目前Datawhale的开源内容分为两种:第一种是已经囊括在我们的学习路线图内的Datawhale精品课,第二种是暂未囊括在我们的学习路线图内的Datawhale测试课。 我们根据您的投票来确定精品课程的排期,其它测试课程一旦完成,即可排入我们…

华为鸿蒙有机会吗,谷歌重压之下,华为鸿蒙还有机会翻盘吗?全球系统生态之争开启...
就在华为处处被针对之际,华为动作可从来都没停下。芯片被制裁,就自己建工厂;海外华为被制裁,就把早已整出来的鸿蒙升级,适配到手机上;5G设备被制裁,就联系企业,扶植养猪,…

(读书笔记).NET大局观-.NET语言(1)
通用语言运行时 通用语言运行时被明确设计为支持多种语言,一般而言,建立于CLR之上的语言可以获得共同的良好处理。通过一个宏大的核心语义集,CLR还界定了一个以它为基础的典型编程语言的大体部分。例如对于任何一种基于CLR的语言,…

【分布式共识三】拜占庭将军问题----书面协议
2019独角兽企业重金招聘Python工程师标准>>> 区块链兄弟社区,区块链技术专业问答先行者,中国区块链技术爱好者聚集地 作者:吴寿鹤 来源:区块链兄弟 原文链接:http://www.blockchainbrother.com/article/8 著…

2021.09 电子学会 - 软件编程(图形化)试题讲解
软件编程(图形化)试题讲解 一级 考核目标 考查对软件编程界面的认识和基本操作;能够导入角色、背景和声音,通过对角色和背景进行简单操作,编写一个具有简单顺序结构的作品;同时考查简单的逻辑推理能力。 …

css代码应该放html哪里,css代码放到哪里?
CSS以HTML为基础,提供了丰富的功能,如字体、颜色、背景的控制及整体排版等。css代码需要放到哪里? 是不是一定写到html文件里面呢? 下面给大家介绍一下。css代码的定义通常有三种方式,内部样式表,内联样式表…

vmware克隆centos修改linux mac地址
故障背景: 在vmware workstation中了完全克隆了一个已经存在的centos的虚拟机,启动之后发现网卡没有启动。于是重启一下network服务,发现提示错误信息“Device eth0 does not seem to be present, delaying initialization.” www.2cto.com …

运用jieba库分词
代码: 统计出团队中文简介中词频 import jieba txtopen("C:\\Users\\Administrator\\Desktop\\介绍.txt","r",encodingutf-8).read() wordsjieba.lcut(txt) counts{} for word in words: if len(word)1: continue else: counts[word]counts.get…
【NCEPU】韩宇:上海新能源汽车比赛方案讲解
韩宇是华北电力大学国教大三的学生,参加了多期Datawhale的组队学习,也在天池、Kaggle等比赛中取得了不错的成绩。 他在线下组队学习时,曾为大家分享过如何准备天池深度学习的比赛?。这篇图文是他为大家分享自己刚刚参加的2021上海…