android开发之shape详解
很多时候,使用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的时候,下面这几个属性才会生效:
- android:innerRadius:内环的半径。
- android:innerRadiusRatio:内环的比例,比如这个值为2,那么内环的半径就为环半径除以2,如果设置了第一个属性,则这个属性不起作用。
- android:thickness:环的厚度。
- android:thicknessRatio:环的厚度比例,比如这个值为2,那么环的厚度就为环半径除以2,如果设置了第三个属性,则这个属性不起作用。
- 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" />
- android:angle="90"表示渐变的起始位置,这个值必须为45的倍数,包括0,0表示从左往右渐变,逆时针旋转,依次是45,90,135.....,90表示从下往上渐变,270表示从上往下渐变,剩下的大家依次去推理。
- android:startColor="#9AFF9A",表示渐变的起始颜色
- android:centerColor="#9ACD32"表示渐变的过渡颜色
- android:endColor="#9AC0CD"表示渐变的结束颜色
- type表示渐变的类型,有三种,分别是linear(线性变化),radial(辐射渐变)以及sweep(扫描渐变)
- 当type为radial时,我们要设置android:gradientRadius="",这个表示渐变的半径(线性渐变和扫描渐变不需要设置)
填充:
<solid android:color="#ADFF2F" />
这个比较简单,不多说。
描边:
<stroke
android:width="1dp"
android:color="#FFFF00"
android:dashWidth="15dp"
android:dashGap="5dp"
/>
- android:dashWidth表示虚线的宽度
- android:dashGap表示虚线之间的间隔
- 以上两个属性如果不设置则为实线
大小:
<size
android:width="1dp"
android:height="1dp"
/>
这个表示该shape的大小,默认情况下,shape的大小与它所在的容器大小成正比。如果我们在ImageView中使用这个shape,那么可以通过android:scaleType="center"属性来限制这种缩放。
当然,还有一种padding,这和我们在xml文件中用的一样,我这里就不多说了。
最后,基于以上几种特性,我做了以下几种效果供大家参考。
示例效果代码下载https://github.com/lenve/shape
版权声明:本文为博主原创文章,未经博主允许不得转载。若有错误地方,还望批评指正,不胜感激。
android开发之shape详解的更多相关文章
- Android开发之InstanceState详解
Android开发之InstanceState详解 本文介绍Android中关于Activity的两个神秘方法:onSaveInstanceState() 和 onRestoreInstanceS ...
- Android开发之InstanceState详解(转)---利用其保存Activity状态
Android开发之InstanceState详解 本文介绍Android中关于Activity的两个神秘方法:onSaveInstanceState() 和 onRestoreInstanceS ...
- Android开发之MdiaPlayer详解
Android开发之MdiaPlayer详解 MediaPlayer类可用于控制音频/视频文件或流的播放,我曾在<Android开发之基于Service的音乐播放器>一文中介绍过它的使用. ...
- android开发之service详解
service作为android的四大组件之一,其重要性可想而知,在开发中,我们经常把一些不需要与用户进行交互的工作放在service中来完成,service运行在后台,这样有些人可能会产生错觉,以为 ...
- Android开发之InstanceState详解(转)
本文来自:http://www.cnblogs.com/hanyonglu/archive/2012/03/28/2420515.html 本文介绍Android中关于Activity的两个神秘方法: ...
- Android开发之AlarmManager详解
AlarmManager实质是一个全局的定时器,是Android中常用的一种系统级别的提示服务,在指定时间或周期性启动其它组件(包括Activity,Service,BroadcastReceiver ...
- Android开发之sharedpreferences 详解
SharedPreferences简介: 做软件开发应该都知道,很多软件会有配置文件,里面存放这程序运行当中的各个属性值,由于其配置信息并不多,如果采用数据库来存放并不划算,因为数据库连接跟操作等 ...
- [转]ANDROID开发之SQLite详解
SQLite简介 Google为Andriod的较大的数据处理提供了SQLite,他在数据存储.管理.维护等各方面都相当出色,功能也非常的强大.SQLite具备下列特点: 1.轻量级 使用 SQLit ...
- Android开发之recycleView详解代码,看完包你熟练掌握recycleView的用法。转自网络经典文章
来源 http://jinyudong.com/2014/11/13/Introduce-RecyclerView-%E4%B8%80/ 编辑推荐:稀土掘金,这是一个针对技术开发者的一个应用,你可以在 ...
随机推荐
- Android开发之注解式框架ButterKnife在ADT中的设置
使用注解式框架ButterKnife的时候,导入到ADT中,结果项目中注解的view无效,如点击button等无任何的反应. 然后在ButterKnife的官网查看到解决办法:http://jakew ...
- Java之关键字static和final的使用
static 在Java中声明属性.方法时,可使用关键字static来修饰. 1.static变量 按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或 ...
- bzoj1069
四边形的问题可以转化为三角形处理穷举对角线,然后处理上下两个三角形,旋转卡壳 ..] of double; q:..] of longint; l,r,i,j,k,t,n:longint; ans:d ...
- PHP 'ext/gd/gd.c'信息泄漏漏洞
漏洞版本: PHP 5.5.x 漏洞描述: CVE ID:CVE-2014-2020 PHP是一种HTML内嵌式的语言. PHP 'ext/gd/gd.c'没有检查数据类型,允许远程攻击者使用字符串或 ...
- Java 回调函数
下面使用java回调函数来实现一个测试函数运行时间的工具类: 如果我们要测试一个类的方法的执行时间,通常我们会这样做: public class TestObject { /** * 一个用来被测试的 ...
- LinkedHashMap的实现原理
1. LinkedHashMap概述: LinkedHashMap是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序.此实现提供所有可选的映射操作,并允许使用null值和null键.此类不保证映 ...
- IIS里面网站停止了,不能启动
IIS里面网站文件夹显示红色的叉叉,停止了,不能启动,所有站点都停止了: 原来是Word wide web publish service 服务停止了,启动就好了
- Selenium 使用NPOI来实现report
Selenium自动化测试过程中,模拟用户操作能实现后需要测试结果输出,这是一个比较重要的过程 1.用system.IO 读写来实现,如果使用这个方式,每个测试生成一个报告,容易开启太多的线程,占用内 ...
- 转:ndk-stack打印崩溃堆栈
接下来详细说明ndk-stack的使用方法. 第一步:首先获得发生崩溃的共享库. 如果你是利用ndk-build应用的话,共享库会在$P ...
- uvalive 7331 Hovering Hornet 半平面交+概率期望
题意:一个骰子在一个人正方形内,蜜蜂在任意一个位置可以出现,问看到点数的期望. 思路:半平面交+概率期望 #include<cstdio> #include<cstring> ...