android开发之shape详解

摘要:
//架构。安卓com/apk/res/android“android:shappe=”矩形|椭圆形|直线|环形“>android:radius=”20dp“android:bottomLeftRadius=”0dp“android:稍后单独设置的圆角半径将覆盖android:angle=”90“android:

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


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

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

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle|oval|line|ring" >
<shape>

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节点中我们还可以定义其他的节点:


圆角:

<corners 
    android:radius="20dp"
    android:topLeftRadius="20dp"
    android:topRightRadius="20dp"
    android:bottomLeftRadius="0dp"
    android:bottomRightRadius="0dp"
    />

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


渐变:


    <gradient
        android:angle="90"
        android:centerColor="#9ACD32"
        android:endColor="#9AC0CD"
        android:startColor="#9AFF9A"
        android:type="linear"
        android:useLevel="false" />


  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="",这个表示渐变的半径(线性渐变和扫描渐变不需要设置)


填充:

<solid android:color="#ADFF2F" />

这个比较简单,不多说。


描边:

<stroke 
    android: 
    android:color="#FFFF00"
    android:dashWidth="15dp"
    android:dashGap="5dp"
    />

  1. android:dashWidth表示虚线的宽度
  2. android:dashGap表示虚线之间的间隔
  3. 以上两个属性如果不设置则为实线


大小:


<size 
    android: 
    android: 
    />

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


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


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


android开发之shape详解第1张


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







免责声明:文章转载自《android开发之shape详解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Sword HTTP协议之chunk介绍form表单select联动(转)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

常见的带宽换算

首先你要明白字节(Byte)和位(bit)的关系: 1 Byte=8 bit 量化网速的指标就是带宽,就是每秒传输了多少字节(Bps),或者每秒传输了多少位(bps) 1 Bps =8 bps  注意大小写;  而一般运营商告诉的网速都是bps 书上某些标准规定1024 = 1K; 1024K =1M; 1024M=1G; 而实际中,一般1000K = 1...

css实现平行四边形、菱形图片效果

一、平行四边形 1. 使用两个元素实现 html <a class="button"> <div>click me</div> </a> css .button{ margin: 50px; display: inline-block; background: #404ED3; trans...

辅助模式最终考验的是想象力,先来看看怎么用!| Accessibility

一、序 Hi,大家好,我是承香墨影! Android 的辅助模式(Accessibility)功能非常的强大。基本上被获取到授权之后,可以监听手机上的任何事件,例如:屏幕点击、窗口的变化、以及模拟点击、模拟系统按键等等。 比较常见的实际使用例子,就是一般应用市场,会推荐开启辅助模式,以便在安装 Apk 的时候,自动帮你点击“下一步”和“安装”按钮。还有个...

JS--微信浏览器复制到剪贴板实现

由于太忙很久没写博客了,如有错误遗漏,请指出,感谢! 首先这里要注意,是微信浏览器下的解决方案,其他浏览器请自行测试。 先说复制到剪贴板主要有什么使用场景: 优惠券优惠码,需要用户复制 淘宝商品,需要复制淘口令 由于淘宝链接无法在微信中打开,所以淘宝开发了淘口令方便物质传播,而导购网站在微信推广的时候也是生成口令,用户只需要复制口令,打开手机淘宝,即可...

Android之RadioButton多行

RadioGroup设置orientation="vertical"竖向单列显示 RadioGroup设置orientation="horizontal"横向单行显示 如何实现多行多列RadioButton呢? step1:重写RadioGroup类 package com.hz.w504_sing_common; import java.util....

Ocelot和Consul 实现网关API 服务注册 负载均衡

Ocelot是一个用.NET Core实现并且开源的API网关,它功能强大,包括了:路由、请求聚合、服务发现、认证、鉴权、限流熔断、并内置了负载均衡器与Service Fabric、Butterfly Tracing集成。这些功能只都只需要简单的配置即可完成 Consul 服务发现 在Ocelot已经支持简单的负载功能,也就是当下游服务存在多个结点的时候,...