美文网首页
Android开发——使用xml文件定义一个 drawable

Android开发——使用xml文件定义一个 drawable

作者: 简秋默 | 来源:发表于2018-09-18 15:53 被阅读352次

      在Android开发中,避免不了要使用图片的情况,但图片又是很占内存的,为了节省内存,减小apk的体积,我们对一些简单的图片使用xml文件进行定义。

    使用xml可以定义哪些drawable

      一些简单的规则几何图形可以使用xml定义,例如:直线、圆、矩形、圆环。android:shape 属性有四个值,分别是:
         line —— 线
         rectangle —— 矩形
         oval —— 圆
         ring —— 圆环

    shape标签里所具有的几个子标签及其具有的属性。

      一、solid 标签
      solid标签——定义了图形内部的填充色,只有一个颜色属性。使用如下:

    <solid
            android:color="@color/colorAccent"/>
    

      二、size 标签
      size标签——定义了图形的大小,有宽高两个属性。使用如下:

    <size
            android:width="50px"
            android:height="50px" />
    

      三、padding 标签
      padding标签——定义了图形的内边距,使用如下:

    <padding
            android:top="10px"
            android:bottom="10px"
            android:left="10px"
            android:right="10px" />
    

      四、stroke 标签
      stroke 标签——定义了图形的描边,有线宽、虚实、和颜色几个属性,使用如下:

    <stroke
            android:width="5px"
            android:dashGap="10px"
            android:dashWidth="10px"
            android:color="@color/colorAccent"/>
         <!-- dashGap 和 dashWidth的值不为0时,线为虚线;任一值为0时,线为实线。 -->
         <!-- dashGap : 两个破折号之间的间隔长度 -->
         <!-- dashWidth : 每一段破折号的长度 -->
    

      五、corners 标签
      corners 标签——定义了矩形图形的圆角半径,使用如下:

    <corners
            android:radius="10px"
            android:topLeftRadius="10px"
            android:topRightRadius="10px"
            android:bottomLeftRadius="10px"
            android:bottomRightRadius="10px"/>
    <!-- radius : 定义全部的圆角半径,和其他四个属性不同时使用。-->
    

      六、gradient 标签
      gradient 标签—— 定义了图形的渐变色,下面介绍几个属性标签 :
        1、android:type : 渐变类型,值有三个,分别 linear —— 线性渐变;radial —— 放射性渐变;sweep —— 扫描式渐变。没有定义时默认值是linear。
        2、android:angle : 渐变的角度,值必须是45的倍数。
        3、android:gradientRadius : 渐变的半径,只有当渐变类型为radial时才能使用。
        4、android:centerX 和 android:centerY : 渐变中心X和渐变中心Y的相对位置,值为0~1。
        5、android:startColor、android:centerColor 和 android:endColor : 定义渐变颜色。
      使用如下:

    <gradient
            android:startColor="@color/colorAccent"
            android:centerColor="@color/colorLightBlue"
            android:endColor="@color/colorPrimary"
            android:gradientRadius="30px"
            android:angle="45"
            android:centerX="0.6"
            android:centerY="0.3"/>
    

      单独使用或者组合使用上述标签即可定义drawable图形。这里着重说明一下圆环的定义,定义圆环时有几个特有属性:
       android:innerRadius :内环的半径
       android:thickness : 环的厚度
       android:innerRadiusRatio : 浮点型,以环的宽度比率来表示内环的半径
       android:thicknessRatio : 浮点型,以环的宽度比率来表示环的厚度
       android:useLevel : 如果当做是LevelListDrawable使用时值为true,否则为false。这里一定要加上useLevel属性并定义为false,不然没有效果。
      android:innerRadiusRatio 和 android:thicknessRatio 的意思不是很理解,但想要的效果通过android:innerRadius 和 android:thickness 也能实现。所有个人使用的不多。定义圆环时使用如下:

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="ring"
        android:innerRadiusRatio="4"
        android:thicknessRatio="9"
        android:innerRadius="10px"
        android:thickness="10px"
        android:useLevel="false">
        <solid
            android:color="@color/colorAccent"/>
    </shape>
    

       至此,shape定义drawable图形介绍完毕。

    相关文章

      网友评论

          本文标题:Android开发——使用xml文件定义一个 drawable

          本文链接:https://www.haomeiwen.com/subject/imzogftx.html