shape之gradient属性简介

Android  2020年6月25日 pm12:15发布4年前 (2020)更新 城堡大人
132 0 0

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 值

只有三种类型

  1. linear是线性[线性渐变.可以理解为 y=kx+b.]
  2. radial是由中心向外渐变的[圆形渐变,起始颜色从cenralX,centralY点开始。]

PS: 设置这种类型如果没有设置android:gradientRadius,会报错。

  1. 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>

参考文章

  1. Android中shape的用法详解
  2. Android开发之Shape详细解读
  3. Android 颜色渐变(gradient)的实现总结
  4. android关于shape的gradient属性详解

 历史上的今天

  1. 2024: 莫言:陪女儿高考(0条评论)
  2. 2023: Seekbar进度条有黑点问题分析(0条评论)
  3. 2022: [代码]Listener和MainListener(0条评论)
  4. 2021: Ubuntu允许root用户远程登录简单介绍(0条评论)
  5. 2021: 席慕容:抉择(0条评论)
版权声明 1、 本站名称: 笔友城堡
2、 本站网址: https://www.biumall.com/
3、 本站部分文章来源于网络,仅供学习与参考,如有侵权,请留言

暂无评论

暂无评论...

随机推荐

查看目录下文件和文件夹个数以及文件夹目录结构

前言有时候需要查看目录(存在多层嵌套)中有多少个文件和目录。cmd中使用命令查看目录和文件个数查看当前目录下文件个数ls -l |grep "^-" | wc -l查看当前目录下包含子目录的文件个数ls -lR |grep "^-" | wc -l查看当前目录下目录个数ls -...

mediaserver的启动

前言之前介绍MediaPlayer的使用,上次写过《MediaPlayer JNI层介绍》,发现很多方法都是都是# //BpMediaPlayer.prepareAsync()mPlayer->start()调用,而且BpMediaPlayer也只是代理而已,真正调用的还是另有其人。...

android13添加SELinux权限时踩的坑

前言在配置Android 13 SELinux权限时出现如下坑,记录一下,方便自己查阅。正文坑一:ERROR: end of file in comment编译时提示service.te有如下错误prebuilts/build-tools/linux-x86/bin/m4:device/...

[摘]Android输入法基于GooglePinyin开源代码进行修改

前言最近有看过别人定制输入法,也想看看怎么实现,因此看到《【Android输入法源码】基于GooglePinyin开源代码进行修改可运行!!!》就下载该作者上传代码调试了一下,可以运行,但不同设备还是存在bug。PS: 本文摘抄,代码调试过,可以运行,存在不同设备适配问题。正文过程找了非...

adb logcat的基本使用

adb logcat基本用法1. adb logcat //打印默认所有日志2. adb logcat -s tag //打印带有tag标签的所有日志3. adb logcat -v time //打印所有日志并带上时间4. adb logcat -s tag -v time //...

Android异常之应用已停止运行的日志分析

文章之前写过,重新整理一下。为什么会有应用已停止运行?运行时出现了未捕获的异常,导致程序无法正常运行。如下面,主线程(main)出现致命异常(fatal exception)导致程序无法正常运行。 # main主线程,fatal exception 致命异常 AndroidRuntime...