当前位置: 首页 > 编程日记 > 正文

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"/>

三种渐变效果,如图所示:

5ac47bb2d7440c373480b5debbec2a79.png

通过GradientDrawable来实现

了解GradientDrawable类

查看文档的时候,先找到ShapeDrawable类,发现xml属性只有几个,如图所示:

72a928af38eba9bb15b576294127cecb.png

和shape的xml属性对应不上,随后又找到GradientDrawable类,发现许多shape在xml中熟悉的属性,如图所示:

b3890e77eb143840332ad673e0a9e919.png

在源码中找到:

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代码设置的三种渐变效果,如图所示:

8a527bdb115a1b91e4b0109ff5d8385a.png

相关文章:

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上海…