目录
gradient属性简介
在drawable文件夹中创建shape_gradient.xml资源。
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> 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"] /> </shape>
[shape] 根标签,声明一个shape [gradient] 声明该shape的属性-渐变色,除此外还有其他属性如corners、stroke、size等等
android:type
String 值
只有三种类型
- linear是线性[线性渐变.可以理解为 y=kx+b.]
- radial是由中心向外渐变的[圆形渐变,起始颜色从cenralX,centralY点开始。]
PS: 设置这种类型如果没有设置android:gradientRadius,会报错。
- sweep是梯形的[扫描线渐变]
android:angle
Integer 值
代表渐变颜色的角度,0 从左往右,90 从上往下(必须是45的整数倍)。
当angle为0时,颜色渐变方向是从左往右; 当angle为90时,颜色渐变方向是从下往上; 当angle为180时,颜色渐变方向是从右往左; 当angle为270时,颜色渐变方向是从上往下;
PS:默认是 0,而且该属性只有在type="linear"情况下起作用。
android:startColor
Color 值
颜色渐变的开始颜色
android:endColor
Color 值
颜色渐变的结束颜色
android:centerColor
Color 值
颜色渐变的中间颜色,主要用于多彩。
android:centerX
Float 值(0 ~ 1.0)
相对于X的渐变位置
PS:这个属性只有在type不为linear时起作用
android:centerY
Float 值(0 ~ 1.0)
相对于Y的渐变位置
PS:这个属性只有在type不为linear时起作用
android:gradientRadius
Float 值
渐变颜色的半径,单位是像素(不需要写单位)
PS:此属性需要配置type="radial"。
android:useLevel
Boolean 值
如果为true,则可在LevelListDrawable中使用。
这通常应为“false”,否则形状不会显示!
代码片段
shape_gradient_one.xml
从左往右线性渐变
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <gradient android:angle="0" android:endColor="@android:color/transparent" android:startColor="@android:color/holo_red_light" android:type="linear" android:useLevel="false" /> </shape>
shape_gradient_two.xml
中心,半径为75的圆形渐变
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <gradient android:centerColor="@android:color/black" android:centerX="0.5" android:centerY="0.5" android:endColor="@android:color/white" android:gradientRadius="75" android:startColor="@android:color/holo_red_dark" android:type="radial" /> </shape>
shape_gradient_three.xml
中心,半径为75的扫描渐变
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <gradient android:centerColor="@android:color/black" android:centerX="0.5" android:centerY="0.5" android:endColor="@android:color/white" android:gradientRadius="75" android:startColor="@android:color/holo_red_dark" android:type="sweep" /> </shape>
参考文章
- 《Android中shape的用法详解》
- 《Android开发之Shape详细解读》
- 《Android 颜色渐变(gradient)的实现总结》
- 《android关于shape的gradient属性详解》
历史上的今天
暂无评论...
随机推荐
[摘]Android收起通知栏代码片段
以下代码系统应用中验证ok<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />收起通知栏public void collapseStatusBar() { Obje...
Android Studio添加第三方库libs和so
前言这个经常用,但还是忘记了,因此参考网上文章整理于此。本文摘抄内容涉及: 添加so库,添加第三方jar,添加Library库文件等。好记性不如烂笔头正文添加so库方法一:在项目中的src/main里新建jniLibs文件夹把.so复制进去,刷新一下即可方法二:在app/...
哑孩子:第一次来到人间
花香我 太阳照我黑夜笼罩我水在远处流着 路让我走它 书让我看它房子让我建造它字让我写它 还不够泪水让我哭它 笑让我笑它回忆让我回忆它 还不够爱让我爱它和孤独一起爱它
JAVA 从一个List里删除包含另一个List的数据
前言简单记录一下 List中删除包含另外一个list的数据。本文只是记录一下。正文下面是之前作者写的:/*** 这是目前我了解到速度最快的一种*/ @SuppressWarnings("unchecked") public static List<String&g...
Binder个人简单总结
前言Binder对于Android开发,很熟悉,也很陌生。我也经常用,但对其原理不是很了解,因此参考其他大佬的,做一下笔记。简单记录一下Android中Binder的原理(其实主要摘抄),方便自己回顾。正文什么是BinderBinder是Android中的一种跨进程通信(IPC)的方式。...
[摘]Java中String首字母大写方法
摘抄于《Java中String首字母大写方法》,最近自己也写过,使用的很普通的方法。传统思路是:先将String 的首字母单独接取下来转成大写,然后再拼接上剩余字符串。public String upperCase(String str) { return str.substring...