zoukankan      html  css  js  c++  java
  • android开发之shape详解

    很多时候,使用shape能够实现的效果,你用一张图片也能够实现,但问题是一张图片无论你怎么压缩,它都不可能比一个xml文件小,因此,为了获得一个高性能的手机App,我们在开发中应该遵循这样一个原则:能够用shape实现的效果尽量不使用图片来实现。


    今天我们就一起来看看shape的使用。

    首先,使用shape画的图形,这个xml文件的根节点是shape,如下:

    1. <span style="font-size:14px;"><shape xmlns:android="http://schemas.android.com/apk/res/android"  
    2.     android:shape="rectangle|oval|line|ring" >  
    3. </span><pre name="code" class="java"><span style="font-size:14px;"><shape</span>></pre>  

    shape取值有四种,可以是rectangle(长方形),oval(椭圆),line(线条),ring(圆环),如果设置的话默认是长方形,只有当我们要画的图形是ring的时候,下面这几个属性才会生效:

    1. android:innerRadius:内环的半径。
    2. android:innerRadiusRatio:内环的比例,比如这个值为2,那么内环的半径就为环半径除以2,如果设置了第一个属性,则这个属性不起作用。
    3. android:thickness:环的厚度。
    4. android:thicknessRatio:环的厚度比例,比如这个值为2,那么环的厚度就为环半径除以2,如果设置了第三个属性,则这个属性不起作用。
    5. android:useLevel:只有当我们的shape使用在LevelListDrawable中的时候,这个值为true,否则为false。

    以上是shape节点,在shape节点中我们还可以定义其他的节点:

    圆角:

    1. <span style="font-size:14px;"><corners   
    2.     android:radius="20dp"  
    3.     android:topLeftRadius="20dp"  
    4.     android:topRightRadius="20dp"  
    5.     android:bottomLeftRadius="0dp"  
    6.     android:bottomRightRadius="0dp"  
    7.     /></span>  


    android:radius表示长方形四个角的半径,当然也可以每个角单独设定,后面单独设定的圆角半径会覆盖android:radius。

    渐变:

    1. <span style="font-size:14px;">    <gradient  
    2.         android:angle="90"  
    3.         android:centerColor="#9ACD32"  
    4.         android:endColor="#9AC0CD"  
    5.         android:startColor="#9AFF9A"  
    6.         android:type="linear"  
    7.         android:useLevel="false" /></span>  
    1. android:angle="90"表示渐变的起始位置,这个值必须为45的倍数,包括0,0表示从左往右渐变,逆时针旋转,依次是45,90,135.....,90表示从下往上渐变,270表示从上往下渐变,剩下的大家依次去推理。
    2. android:startColor="#9AFF9A",表示渐变的起始颜色
    3. android:centerColor="#9ACD32"表示渐变的过渡颜色
    4. android:endColor="#9AC0CD"表示渐变的结束颜色
    5. type表示渐变的类型,有三种,分别是linear(线性变化),radial(辐射渐变)以及sweep(扫描渐变)
    6. 当type为radial时,我们要设置android:gradientRadius="",这个表示渐变的半径(线性渐变和扫描渐变不需要设置)

    填充:

    1. <span style="font-size:14px;"><solid android:color="#ADFF2F" /></span>  


    这个比较简单,不多说。

    描边:

    1. <span style="font-size:14px;color:#000000;"><stroke   
    2.     android:width="1dp"  
    3.     android:color="#FFFF00"  
    4.     android:dashWidth="15dp"  
    5.     android:dashGap="5dp"  
    6.     /></span>  
    1. android:dashWidth表示虚线的宽度
    2. android:dashGap表示虚线之间的间隔
    3. 以上两个属性如果不设置则为实线

    大小:

    1. <span style="font-size:14px;"><size   
    2.     android:width="1dp"  
    3.     android:height="1dp"  
    4.     /></span>  


    这个表示该shape的大小,默认情况下,shape的大小与它所在的容器大小成正比。如果我们在ImageView中使用这个shape,那么可以通过android:scaleType="center"属性来限制这种缩放。

    当然,还有一种padding,这和我们在xml文件中用的一样,我这里就不多说了。

    最后,基于以上几种特性,我做了以下几种效果供大家参考。

    示例效果代码下载https://github.com/lenve/shape

    非常炫的效果

  • 相关阅读:
    设置数据库某字段为当前时间
    HashMap源码解析(只为吊打面试官)
    SRAM 静态内存芯片 IS62WV51216 的使用 STM32F407ZGT6
    手机ARM种类,STM32中的ARM核又是什么东东?
    运算放大器 常用经典电路 计算书
    SMT 生产线设备 (PCBA)
    横机 电控设计
    ISO26262 标准
    质量管理体系(16949)的五大工具
    IATF16949和TS16949有什么不同?
  • 原文地址:https://www.cnblogs.com/earl-yongchang/p/4929407.html
Copyright © 2011-2022 走看看