用layer-list实现图片旋转叠加、错位叠加、阴影、按钮指示灯
2024-08-28 13:51:53
先来看看一个简单的文件:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape
android:shape="rectangle"
android:dither="true"> <corners android:radius="2dp"/>
<stroke
android:width="2dp"
android:color="#ccc" /> </shape>
</item> <item
android:top="0dp"
android:bottom="2dp"
>
<shape
android:shape="rectangle"
android:dither="true">
<corners android:radius="2dp"/>
<solid android:color="@android:color/white"/>
</shape>
</item> </layer-list>
我们注意到item中有top,bottom什么的,这些属性是干嘛的呢?其实你可以完全理解为top就是paddingTop,bottom就是paddingBottom。就是内边距。
效果一:旋转叠加(http://bbs.51cto.com/thread-1067726-1-1.html)
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<!-- 最底层的图片,以x,y轴坐标为中心进行旋转-->
<rotate android:pivotX="0" android:pivotY="0"
android:fromDegrees="-10" android:toDegrees="-10">
<bitmap android:src="@drawable/chatting_bg_default_thumb"/>
</rotate>
</item>
<!-- 第二层的图片,以x,y轴坐标为中心进行旋转-->
<item>
<rotate android:pivotX="0" android:pivotY="0"
android:fromDegrees="15" android:toDegrees="15">
<bitmap android:src="@drawable/chatting_bg_purecolor_thumb"/>
</rotate>
</item>
<!-- 最上层的图片,以x,y轴坐标为中心进行旋转-->
<item>
<rotate android:pivotX="0" android:pivotY="0"
android:fromDegrees="35" android:toDegrees="55">
<bitmap android:src="@drawable/mark"/>
</rotate>
</item>
</layer-list>
效果二:图片叠加 (http://blog.csdn.net/cwx01perfect/article/details/7739005)
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<!--图片1-->
<item android:id="@+id/user_faceback_drawable"
android:drawable="@drawable/faceback" />
<!--图片2-->
<item android:id="@+id/user_face_drawable"
android:drawable="@drawable/h001"
android:left="10.0dip"
android:top="18.0dip"
android:right="25.0dip"
android:bottom="35.0dip" />
</layer-list>
效果三:给图片绘制阴影,其实就是叠加一个背景图(http://www.aitinan.com/4004.html)
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 阴影部分 -->
<!-- 个人觉得更形象的表达:top代表下边的阴影高度,left代表右边的阴影宽度。其实也就是相对应的offset,solid中的颜色是阴影的颜色,也可以设置角度等等 -->
<item
android:left="2dp"
android:top="2dp">
<shape android:shape="rectangle" >
<gradient
android:angle="270"
android:endColor="#0F000000"
android:startColor="#0F000000" />
<corners
android:bottomLeftRadius="6dip"
android:bottomRightRadius="6dip"
android:topLeftRadius="6dip"
android:topRightRadius="6dip" />
</shape>
</item>
<!-- 背景部分 -->
<!-- 形象的表达:bottom代表背景部分在上边缘超出阴影的高度,right代表背景部分在左边超出阴影的宽度(相对应的offset) -->
<item
android:bottom="3dp"
android:right="3dp">
<shape android:shape="rectangle" >
<gradient
android:angle="270"
android:endColor="#FFFFFF"
android:startColor="#FFFFFF" />
<corners
android:bottomLeftRadius="6dip"
android:bottomRightRadius="6dip"
android:topLeftRadius="6dip"
android:topRightRadius="6dip" />
</shape>
</item>
</layer-list>
效果四:给按钮添加指示器
这里的意思就是你可能有个普通的按钮,但是不想做按下的效果了,那么可以在图片上叠加一个光点的图片,这样按下后图片上就会出现这个光点,表明用户已经按下了按钮。一个是节约资源,一个是可以最大限度的复用图片。
下面代码中的qq就代表光点
back qq
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 按下时的图片 -->
<item android:state_pressed="true">
<layer-list>
<item android:drawable="@drawable/back"/>
<!-- 图片2 -->
<item android:bottom="35.0dip" android:drawable="@drawable/qq"
android:left="8.0dip" android:right="25.0dip" android:top="18.0dip"/>
</layer-list> </item>
<!-- 默认图片 -->
<item android:drawable="@drawable/back"/> </selector>
使用:
<Button
android:id="@+id/button1"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:background="@drawable/selector"/
最新文章
- linux命令:目录结构
- 报错:org.hibernate.AssertionFailure: null id in com.tt.hibernate.entities.News entry (don&#39;t flush the Session after an exception occurs)
- sql连着function使用
- PHP- 数字转汉字
- Penetration Testing、Security Testing、Automation Testing
- Qt持久性对象进行序列化
- Hive学习之六 《Hive进阶— —hive jdbc》 详解
- (转) Friendship and inheritance
- C#基础:事件(一) 【转】
- 添加“返回顶部”小图标按钮的JS(JavaScript)代码详解
- printf参数的问题
- 基于FP-Tree的关联规则FP-Growth推荐算法Java实现
- Python中括号的区别及用途
- Python第十五天 datetime模块 time模块 thread模块 threading模块 Queue队列模块 multiprocessing模块 paramiko模块 fabric模块
- RocketMQ4.3.x对顺序消息的理解
- python 数字以及字符串(方法总结,有的可能理解错误)
- C++ Opencv createTrackbar()创建滑动条实现对比度、亮度调节及注意事项
- PHP反序列化漏洞学习
- bat cmd 删除文件或文件夹 删除注册表
- 葡萄城报表介绍:矩表(Tablix)
热门文章
- 【LOJ】#2079. 「JSOI2016」轻重路径
- 如何快速的打开当前文件夹的dos命令窗口
- Windows下安装Tensorflow(python3.6):记录过程
- P2429 制杖题
- git初级浅入其常用操作
- linux学习笔记-7.文件属性
- 【BZOJ 1005】 1005: [HNOI2008]明明的烦恼 (prufer数列+高精度)
- BZOJ.2440.[中山市选2011]完全平方数(莫比乌斯函数 二分)
- zoj 3644 记忆化搜索
- WEB应用从服务器主动推送Data到客户端有那些方式?