美文网首页
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