Explicação detalhada da forma desenhável

Não

etiqueta XML

Classe classe

significado

1

forma

ShapeDrawable

forma específica, padrão de um modelo

2

seletor

StateListDrawable

Escolha padrões diferentes para estados diferentes

3

lista de camadas

Camada desenhável

padrão em cascata

4

lista de níveis

LevelListDrawable

Diferentes níveis de padrões

5

transição

TransiçãoDrawable

padrão gradiente

6

ondulação

RippleDrawable

padrão de ondulação

7

inserir

InsetDrawable

Gráficos incorporados

8

escala

EscalaDrawable

padrão de escala

9

grampo

ClipDrawable

padrão de corte

10

girar

Girar Desenhar

Girar padrão

11

lista de animação

Animação Desenhável

Efeitos de animação

12

bitmap

BitmapDrawable

Padrão de imagem

13

nove patches

NinePatchDrawable

.9 Figura

<?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倍关系将不存在了,而是按照你指定的属性值画圆环。

  -->

 

Acho que você gosta

Origin blog.csdn.net/paroleg/article/details/103536479
Recomendado
Clasificación