shape 简单使用

shape 表示图形的形状,通过 shape 创建的 Drawable 其实体类是 GradientDrawable

shape 形状
  • line:直线

  • oval: 椭圆

  • rectangle: 矩形(默认)

  • ring: 圆环

shape 标签
  • corners

    表示 shape 的四个角的角度,用 px 表示,只适用于 矩形 shape。

    • 属性

      
      
    • 示例

      
      
          
          
          
          
      
      
shape 简单使用_第1张图片
shape_corners.png
  • gradient

    gradient 表示渐变效果,与 solid 互相排斥,solid 表示纯色填充。

    • 属性

      
      
    • 示例

      
      
          
          
      
      
      1. linear


        shape 简单使用_第2张图片
        gradinet_linear.png
    1. radial


      shape 简单使用_第3张图片
      gradient_raidal.png

      注: 当渐变类型为 radial,必须配合 android:gradientRadius 才会生效。

    2. sweep
      shape 简单使用_第4张图片
      gradient_sweep.png
  • padding

    padding 表示 View 内部的距离,等价于 View 的 android:paddingXXX属性。

    • 属性

      
      
    • 示例

      
      
          
          
          
         
      
      
shape 简单使用_第5张图片
shape_padding.png
  • size

    size 表示 shape 的宽高

    • 属性

      
      
    • 示例

      1. 定义 shape 资源

         
        
             
             
            
            
         
        
      2. 布局引用

         
         
        
               
shape 简单使用_第6张图片
shape_size.png

注: size 指的是 shape 的大小,作为 View 的背景使用,shape 会被拉伸至 View 的大小,接下来看例子。

  1. 修改布局中 Button 的宽高为 300 dp
shape 简单使用_第7张图片
shape_size_300.png
  • solid

    表示纯色填充

    • 属性

      
      
  • stroke

    表示 shape 的描边

    • 属性

      
      
    • 示例

      
      
          
          
          
          
      
      
shape 简单使用_第8张图片
shape_stroke.png

注: 如果 android:dashWidth 或 android:dashGap 有一个为 0,虚线效果将不会生效。

以上都是基于 矩形 的 shape 操作,接下来看看其他的 形状

1. line

  • line 的用来画分割线的,可以画实线和虚线。需要配合 strokesize 使用。

    • 示例

      
      
         
         
         
         
      
      
    • 布局引用

      
      
      
            
      
            
        
      
      
shape 简单使用_第9张图片
shape_line.png

通过对比左右两个 ImaggeView 可以清楚的看到,在 shape 中指定的 size 高度为 200dp,左边的 ImageView 引用这个 shape,显示的高度就是 200dp。

  • 画线时,有几点特性需要注意:

    • 只能画水平线,不能画横线

    • 线的高度是通过 stroke 的 android:width 属性指定

    • size 的 android:height 指定的是引用该 shape 的 View 的高度

    • size 的 android:height 必须大于 stroke 的 android:width 才会显示

    • 线在 View 显示的范围内居中显示

    • 线左右两边会留有空白,线越粗,空白越大

    • 引用虚线的 View,必须添加 android:layerType="software" 属性,否则虚线不显示

2. oval
  • oval 是用来画椭圆的,一般画正圆比较常用

    • 示例

      
      
          
          
          
      
      
      
shape 简单使用_第10张图片
shape_oval.png
3. ring
  • 针对 ring 这个形状,有五个特殊的属性

    • 属性

      • android:innerRadius 圆环内半径

      • android:innerRadiusRatio 内半径占整个 Drawable 的比例,默认为 9,和 android:innerRadius 同时存在,会被覆盖

      • android:thickness 圆环的厚度

      • android:thicknessRatio 厚度占整个 Drawable 的比例,默认为 3,和android:thickness 同时存在,会被覆盖

      • android:useLevel 一般为 false ,否则圆环可能无法显示

    • 示例

      
              
              solid android:color="@color/blue" />
      
      
    shape 简单使用_第11张图片
    shape_ring.png

参考资料

  1. Android 开发艺术探索
  2. ANDROID样式的开发:SHAPE篇
    感谢以上作者的辛勤付出。

你可能感兴趣的:(shape 简单使用)