Drawable shape detailed explanation

No

xml tag

Class class

meaning

1

shape

ShapeDrawable

specific shape, pattern of a model

2

selector

StateListDrawable

Choose different patterns for different states

3

layer-list

LayerDrawable

cascading pattern

4

level-list

LevelListDrawable

Different levels of patterns

5

transition

TransitionDrawable

gradient pattern

6

ripple

RippleDrawable

ripple pattern

7

inset

InsetDrawable

Embedded graphics

8

scale

ScaleDrawable

scale pattern

9

clip

ClipDrawable

cut pattern

10

rotate

RotateDrawable

Rotate pattern

11

animation-list

AnimationDrawable

Animation effects

12

bitmap

BitmapDrawable

Picture pattern

13

nine-patch

NinePatchDrawable

.9 Figure

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:innerRadius="150dp"
    android:shape="ring"
    android:useLevel="false">
    <!-- 1  shape标签:

    android:shape:

      rectangle: 矩形,默认的形状,可以画出直角矩形、圆角矩形、弧形等

      oval: 椭圆形,用得比较多的是画正圆

      line: 线形,可以画实线和虚线

      ring: 环形,可以画环形进度条

    android:tint:给shape着色

    android:tintMode:着色模式(有关tint和tintMode请参看文章:http://blog.csdn.net/u010687392/article/details/47399719)

    android:dither:将在位图的像素配置与屏幕不同时(例如:ARGB 8888 位图和 RGB 565 屏幕)启用位图的抖动;值为“false”时则停用抖动。默认值为 true。

    android:visible:暂时还不清楚控制什么隐藏。

      android:useLevel:如果为true,则可在LevelListDrawable中使用。这通常应为“false”,否则形状不会显示。

    android:thickness:环的厚度,指内环与外环的环间距。(只适用于shape为ring)

    android:thicknessRatio:浮点型,以环的宽度比率来表示环的厚度,默认为9,表示环的厚度为环的宽度除以9,该值会被android:thickness覆盖(只适用于shape为ring)

      android:innerRatio:内环半径(只适用于shape为ring)

    android:innerRadiusRatio:浮点型,以环的宽度比率来表示内环的半径,默认为3,表示内环半径为环的宽度除以3,该值会被android:innerRadius覆盖(只适用于shape为ring) -->

    <!-- <size
         android:height="100dp"
         android:width="100dp"
         />-->
    <!-- 2  shape下size标签:设置shape宽高值

    android:height:高度

    android:width:宽度

    注意事项:只有控件宽高设置成wrap_content时,此处宽高才起作用,但是起到的却是最小宽高值。也就是说,当控件宽高超过你此处指定的值时,它会变化(wrap_content!!!) -->

    <!-- <solid
         android:color="@color/colorPrimary"
         />-->
    <!--3  shape下solid标签:设置形状填充颜色

    android:color:指定色值-->

    <padding
        android:bottom="20dp"
        android:left="20dp"
        android:right="20dp"
        android:top="20dp" />

    <!--4  shape下padding标签:设置内容与边界的距离

    android:left:左内边距

    android:top:上内边距

    android:right:右内边距

    android:bottom:左内边距-->

    <!-- <corners
         android:radius="20dp"
         />-->
    <!-- 5  shape下corners标签:设置四个角的圆角

    android:radius:       四个角圆角

    android:topLeftRadius:   左上角的圆角

    android:topRightRadius:   右上角的圆角

    android:bottomLeftRadius:  左下角的圆角

    android:bottomRightRadiusleft:右下角的圆角

    注意事项:radius属性值可以被其他四个属性覆盖。 -->


    <!--<stroke
        android:color="#000000"
        android:width="3dp"
        android:dashWidth="10dp"
        android:dashGap="3dp"
        />-->
    <!-- 6  shape下stroke标签:设置shape的外边界线

    android:color:     边界线的颜色

    android:width:    边界线的宽度      

    android:dashWidth:  段虚线的宽度(可以将边界线理解成一段段线无间隔的连接)

    android:dashGap:   段虚线的间隔 -->

    <gradient
        android:angle="90"
        android:endColor="#FFF5EE"
        android:gradientRadius="100dp"
        android:startColor="#0000FF"
        android:type="linear" />

    <!-- 7  shape下的gradient标签:设置形状渐变

        android:type:渐变的类型

        linear:线性渐变,默认的渐变类型

        radial:放射渐变,设置该项时,必须设置android:gradientRadius渐变半径属性

        sweep:扫描性渐变                            

    android:angle:渐变的角度,线性渐变时(linear也是默认的渐变类型)才有效,必须是45的倍数,0表示从左到右,90表示从下到上    

    android:centerX:渐变中心的相对X坐标,放射渐变时(radial)才有效,在0.0到1.0之间,默认为0.5,表示在正中间  

    android:centerY:渐变中心的相对X坐标,放射渐变时(radial才有效,在0.0到1.0之间,默认为0.5,表示在正中间

    android:useLevel:如果为true,则可在LevelListDrawable中使用。这通常应为“false”,否则形状不会显示。

    android:startColor:渐变开始的颜色

    android:centerColor:渐变中间的颜色

    android:endColor:渐变结束的颜色

    android:gradientRadius:渐变的半径,只有渐变类型为radial时才使用 -->

</shape>

<!-- 至此,所有有关shape属性以及子标签的属性全部介绍完毕。

  下面让我们看一下,实际应用时候的注意事项

  画虚线时,有几点特性必须要知道的:

    只能画水平线,画不了竖线;
    1.线的高度是通过stroke的android:width属性设置的;
   
    2.size的android:height属性定义的是整个形状区域的高度;(前提是控件view没有设置layout_height属性值,即为wrap_content)
   
    3.size的height必须大于stroke的width,否则,线无法显示;(与3同前提,否则就是size的height必须大于控件的height)
   
    4.线在整个形状区域中是居中显示的;
   
    5.线左右两边会留有空白间距,线越粗,与stroke的dashWidth的值相关。
    
    6.引用虚线的view必须添加属性android:layerType,值设为"software",否则显示不了虚线。

  画圆环时,有几点特性必须要知道的:

     1.必须在shape根标签下指定shape的类型为ring。

      2.默认情况下,innerRadiusRatio值为3,thicknessRatio值为9,但是这两个比率可以分别被innerRadius、thickness覆盖。

      3.默认情况下,圆环内径是圆环厚度的三倍。

      4.当只指定了圆环内径或者圆环厚度其中的任何一个属性时,两者之间的3倍关系都将不在存在,另一个属性仍会用默认情况下的值。(画圆环必须同时指定圆环内径和圆环厚度)

      5.当同时指定了圆环内径和圆环厚度时,那么这两者默认的3倍关系将不存在了,而是按照你指定的属性值画圆环。

  -->

 

Guess you like

Origin blog.csdn.net/paroleg/article/details/103536479