Android Drawable - Shape Drawable使用详解

  • shape图形 --简单介绍
  • shape图形 --如何画?
  • shape图形 --参数详细解析

shape图形简单介绍

用xml实现一些形状图形, 或则颜色渐变效果, 相比PNG图片, 占用空间更小; 相比自定义View, 实现起来更加简单.

怎么画?

在res/drawable/目录下建一个XML资源文件
Shape图片语法相对复杂, 下面是一个总结性的注释, 涵盖了大部分的参数,属性.

java 复制代码
<?xml version="1.0" encoding="utf-8"?>
<!--rectangle 长方形 /默认-->
<!--oval 椭圆-->
<!--line 线-->
<!--ring 环形-->
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <!--corners标签: 圆角-->
    <!--bottomLeftRadius 左下角-->
    <!--bottomRightRadius 右下角-->
    <!--topLeftRadius 左上角-->
    <!--topRightRadius 右上角-->
    <!--radius 是四个角, 设置了这个就不需要设置上面的四个了, PS:它的优先级比较低, 会被其他参数覆盖-->
    <corners
        android:bottomLeftRadius="5dip"
        android:bottomRightRadius="5dip"
        android:radius="5dip"
        android:topLeftRadius="5dip"
        android:topRightRadius="5dip"/>

    <!--gradient标签: 简单的说: 让图形变成一个有颜色梯度的-->
    <!--angle 是颜色变换的角度, 默认是0, 取值必须是45的 倍数. 0: 是颜色从左边到右边, 90: 是颜色从底部到顶部, -->
    <!--startColor centerColor endColor 一起使用: 开始的颜色, 中间的颜色, 结束的颜色-->
    <!--centerX centerY是指定位置坐标, 取值是0.0f ~ 1.0f 之间, 例如: android:centerX="0.5f"  表示X方向的中间位置-->
    <!--type 颜色渐变的类型, 取值类型有三种: linear/radial/sweep  -->
    <!--linear 线性变化, 就是颜色从左往右, 从下往上-->
    <!--radial 放射变化, 例如: 从一个圆中心到圆的边缘变化-->
    <!--sweep 扫描式渐变, 类似雷达扫描的那种图形-->
    <!--gradientRadius 和android:type="radial"一起连用, 半径-->
    <gradient
        android:angle="0"
        android:centerColor="#000"
        android:centerX="0.5"
        android:centerY="0.5"
        android:endColor="#FFF"
        android:gradientRadius="20dip"
        android:startColor="#000"
        android:type="linear"
        android:useLevel="true"/>

    <!--padding标签: 这里的padding是控件中间内容与shape图形图片的距离-->
    <padding
        android:bottom="5dip"
        android:left="5dip"
        android:right="5dip"
        android:top="15dip"/>

    <!--size标签 shape图形的宽度和高度  这里一般不用设置, 它的优先级没有控件的优先级大, 他指定控件的宽高就好, shape图形会随控件拉伸-->
    <size
        android:width="50dip"
        android:height="10dip"/>

    <!--solid标签: shape图形背景色-->
    <!--PS: 这个和上面的gradient标签会互斥, 一个是设置背景色, 一个是设置渐变色, 你懂得-->
    <solid
        android:color="@android:color/white"/>

    <!--stroke标签: 边框-->
    <!--width 边框的宽度-->
    <!--color 边框的颜色-->
    <!--下面两个参数是 把边框变成虚线用-->
    <!--dashGap 虚线中空格的长度-->
    <!--dashWidth 虚线中实线的长度-->
    <stroke
        android:width="5dip"
        android:color="#0000FF"
        android:dashGap="2dip"
        android:dashWidth="1dip"/>
</shape>

shape图形参数详细解析

  • shape 图形形状
  • corners 圆角标签
  • gradient 阶梯渐变标签
  • padding 边距标签
  • size 大小标签
  • solid 背景标签
  • stroke 边框标签
shape图形的形状, 一共四种形状.
java 复制代码
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
</shape>
  • rectangle 长方形/默认是长方形
  • oval 椭圆
  • line 线
  • ring 环形

来源:
Android Drawable - Shape Drawable使用详解(附图)_android shapedrawable-CSDN博客

相关推荐
烬奇小云3 小时前
认识一下Unicorn
android·python·安全·系统安全
顾北川_野15 小时前
Android 进入浏览器下载应用,下载的是bin文件无法安装,应为apk文件
android
CYRUS STUDIO15 小时前
Android 下内联汇编,Android Studio 汇编开发
android·汇编·arm开发·android studio·arm
右手吉他15 小时前
Android ANR分析总结
android
PenguinLetsGo17 小时前
关于 Android15 GKI2407R40 导致梆梆加固软件崩溃
android·linux
杨武博19 小时前
音频格式转换
android·音视频
音视频牛哥21 小时前
Android音视频直播低延迟探究之:WLAN低延迟模式
android·音视频·实时音视频·大牛直播sdk·rtsp播放器·rtmp播放器·android rtmp
ChangYan.1 天前
CondaError: Run ‘conda init‘ before ‘conda activate‘解决办法
android·conda
二流小码农1 天前
鸿蒙开发:ForEach中为什么键值生成函数很重要
android·ios·harmonyos
夏非夏1 天前
Android 生成并加载PDF文件
android