先来看看一个简单的文件:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  3. <item>
  4. <shape
  5. android:shape="rectangle"
  6. android:dither="true">
  7.  
  8. <corners android:radius="2dp"/>
  9. <stroke
  10. android:width="2dp"
  11. android:color="#ccc" />
  12.  
  13. </shape>
  14. </item>
  15.  
  16. <item
  17. android:top="0dp"
  18. android:bottom="2dp"
  19. >
  20. <shape
  21. android:shape="rectangle"
  22. android:dither="true">
  23. <corners android:radius="2dp"/>
  24. <solid android:color="@android:color/white"/>
  25. </shape>
  26. </item>
  27.  
  28. </layer-list>

我们注意到item中有top,bottom什么的,这些属性是干嘛的呢?其实你可以完全理解为top就是paddingTop,bottom就是paddingBottom。就是内边距。

效果一:旋转叠加(http://bbs.51cto.com/thread-1067726-1-1.html)

  1. <?xml version="1.0" encoding="utf-8"?>
  2.  
  3. <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  4. <item>
  5. <!-- 最底层的图片,以x,y轴坐标为中心进行旋转-->
  6. <rotate android:pivotX="0" android:pivotY="0"
  7. android:fromDegrees="-10" android:toDegrees="-10">
  8. <bitmap android:src="@drawable/chatting_bg_default_thumb"/>
  9. </rotate>
  10. </item>
  11. <!-- 第二层的图片,以x,y轴坐标为中心进行旋转-->
  12. <item>
  13. <rotate android:pivotX="0" android:pivotY="0"
  14. android:fromDegrees="15" android:toDegrees="15">
  15. <bitmap android:src="@drawable/chatting_bg_purecolor_thumb"/>
  16. </rotate>
  17. </item>
  18. <!-- 最上层的图片,以x,y轴坐标为中心进行旋转-->
  19. <item>
  20. <rotate android:pivotX="0" android:pivotY="0"
  21. android:fromDegrees="35" android:toDegrees="55">
  22. <bitmap android:src="@drawable/mark"/>
  23. </rotate>
  24. </item>
  25. </layer-list>

效果二:图片叠加 (http://blog.csdn.net/cwx01perfect/article/details/7739005)

  1. <layer-list
  2. xmlns:android="http://schemas.android.com/apk/res/android">
  3. <!--图片1-->
  4. <item android:id="@+id/user_faceback_drawable"
  5. android:drawable="@drawable/faceback" />
  6. <!--图片2-->
  7. <item android:id="@+id/user_face_drawable"
  8. android:drawable="@drawable/h001"
  9. android:left="10.0dip"
  10. android:top="18.0dip"
  11. android:right="25.0dip"
  12. android:bottom="35.0dip" />
  13. </layer-list>

效果三:给图片绘制阴影,其实就是叠加一个背景图(http://www.aitinan.com/4004.html)

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
  3.  
  4.     <!-- 阴影部分 -->
  5.     <!-- 个人觉得更形象的表达:top代表下边的阴影高度,left代表右边的阴影宽度。其实也就是相对应的offset,solid中的颜色是阴影的颜色,也可以设置角度等等 -->
  6.     <item
  7.         android:left="2dp"
  8.         android:top="2dp">
  9.         <shape android:shape="rectangle" >
  10.  
  11.             <gradient
  12.                 android:angle="270"
  13.  
  14.                 android:endColor="#0F000000"
  15.                 android:startColor="#0F000000" />
  16.  
  17.             <corners
  18.                 android:bottomLeftRadius="6dip"
  19.                 android:bottomRightRadius="6dip"
  20.                 android:topLeftRadius="6dip"
  21.                 android:topRightRadius="6dip" />
  22.         </shape>
  23.     </item>
  24.  
  25.     <!-- 背景部分 -->
  26.     <!-- 形象的表达:bottom代表背景部分在上边缘超出阴影的高度,right代表背景部分在左边超出阴影的宽度(相对应的offset) -->
  27.     <item
  28.         android:bottom="3dp"
  29.         android:right="3dp">
  30.         <shape android:shape="rectangle" >
  31.  
  32.             <gradient
  33.                 android:angle="270"
  34.                 android:endColor="#FFFFFF"
  35.                 android:startColor="#FFFFFF" />
  36.  
  37.             <corners
  38.                 android:bottomLeftRadius="6dip"
  39.                 android:bottomRightRadius="6dip"
  40.                 android:topLeftRadius="6dip"
  41.                 android:topRightRadius="6dip" />
  42.         </shape>
  43.     </item>
  44.  
  45. </layer-list>

效果四:给按钮添加指示器

这里的意思就是你可能有个普通的按钮,但是不想做按下的效果了,那么可以在图片上叠加一个光点的图片,这样按下后图片上就会出现这个光点,表明用户已经按下了按钮。一个是节约资源,一个是可以最大限度的复用图片。

下面代码中的qq就代表光点

back       qq

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <selector xmlns:android="http://schemas.android.com/apk/res/android">
  3.  
  4. <!-- 按下时的图片 -->
  5. <item android:state_pressed="true">
  6. <layer-list>
  7. <item android:drawable="@drawable/back"/>
  8. <!-- 图片2 -->
  9. <item android:bottom="35.0dip" android:drawable="@drawable/qq"
  10. android:left="8.0dip" android:right="25.0dip" android:top="18.0dip"/>
  11. </layer-list>
  12.  
  13. </item>
  14. <!-- 默认图片 -->
  15. <item android:drawable="@drawable/back"/>
  16.  
  17. </selector>

使用:

  1. <Button
  2. android:id="@+id/button1"
  3. android:layout_width="100dp"
  4. android:layout_height="100dp"
  5. android:layout_centerHorizontal="true"
  6. android:layout_centerVertical="true"
  7. android:background="@drawable/selector"/

用layer-list实现图片旋转叠加、错位叠加、阴影、按钮指示灯的更多相关文章

  1. js无刷新上传图片,服务端有生成缩略图,剪切图片,iphone图片旋转判断功能

    html: <form action="<{:AppLink('circle/uploadimg')}>" id="imageform" me ...

  2. HTML5图片旋转

    HTML5图片旋转 首先我们使用Cococs2dx-Js-Lite版,来创建一个工程,我们所需要的开发环境如下: 1,webstrom 2,google chrome浏览器 3,cocos2dx-Js ...

  3. iOS 图片旋转方法

    iOS 图片旋转方法 通过 CGImage 或 CIImage 旋转特定角度 UIImage可通过CGImage或CIImage初始化,初始化方法分别为init(cgImage: CGImage, s ...

  4. iOS transform解决连续多次旋转缩放,实现图片旋转缩放效果

    一.需求 实现imageView的缩放旋转效果,一般有两种方式: 1.底层加scrollview,利用scrollview的属性实现.(推荐这种,这是我比较后发现的,手势做缩放旋转会有点弊端) 2.利 ...

  5. 自己积累的一些Emgu CV代码(主要有图片格式转换,图片裁剪,图片翻转,图片旋转和图片平移等功能)

    using System; using System.Drawing; using Emgu.CV; using Emgu.CV.CvEnum; using Emgu.CV.Structure; na ...

  6. PHPThumb处理图片,生成缩略图,图片尺寸调整,图片截取,图片加水印,图片旋转

    [强烈推荐]下载地址(github.com/masterexploder/PHPThumb). 注意这个类库有一个重名的叫phpThumb,只是大小写的差别,所以查找文档的时候千万注意. 在网站建设过 ...

  7. jQuery图片旋转展示收缩效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. iOS_UIImage_图片旋转

    一.目的: 有时候我们获得到的图片我们不是我们想要的方向,需要对图片进行旋转.比如:图片旋转90度180度等. 二.实现过程. 1.获取到该UIImage. 2.开启上下文. 3.上下文的具体操作. ...

  9. Rotating Image Slider - 图片旋转切换特效

    非常炫的图片旋转滑动特效,相信会给你留下深刻印象.滑动图像时,我们会稍稍旋转它们并延缓各元素的滑动.滑块的不寻常的形状是由一些预先放置的元素和使用边框创建.另外支持自动播放选项,鼠标滚轮的功能. 在线 ...

  10. JQuery插件让图片旋转任意角度且代码极其简单

    引入下方的jquery.rotate.js文件,然后通过$("选择器").rotate(角度);可以旋转任意角度, 例如$("#rotate-image").r ...

随机推荐

  1. day12--python操作mysql

        本篇对于Python操作MySQL主要使用两种方式:     1.原生模块 pymsql(http://www.cnblogs.com/wupeiqi/articles/5713330.htm ...

  2. mysql varchar 转 decimal

    在我们写代码的实际业务中,有时候实体类用的是String,数据库中自然是VARCHAR类型,但是如果这个实体的属性值放的是数字类型,你查询的时候又需要对它进行排序.sql怎么写呢. 别担心MySQL提 ...

  3. html5 利用谷歌地图显示当前位置

    目前,google在国内需要FQ才能上,翻不了墙的话,只能获取到经纬度信息. *调用navigator.geolocation对象时,首先要获取用户同意. navigator.geolocation. ...

  4. 循序渐进学.Net Core Web Api开发系列【4】:前端访问WebApi

    系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 前一篇文章 ...

  5. Orleans介绍

    一.介绍 Orleans是一个框架,提供了一个直接的方法来构建分布式高规模计算应用程序 默认可扩展 -> Orleans处理构建分布式系统的复杂性,使您的应用程序能够扩展到数百台服务器.低延迟 ...

  6. UML类图-聚合和组合的区别

    类图-组合和聚合 学习自 http://blog.sina.com.cn/s/blog_4ae8f77f0100ji5k.html http://blog.csdn.net/nodeathphoeni ...

  7. 数据转换bug花了半天时间 Java.math.BigDecimal cannot be cast to java.lang.String

    从数据库取出一个 Count函数 统计的值 在代码中要转成Integer类型的时候 Integer.parseInt((String)map.get("ID_")) 报了一下错误: ...

  8. BZOJ.4939.[Ynoi2016]掉进兔子洞(莫队 bitset 分组询问)

    BZOJ 洛谷 删掉的数即三个区间数的并,想到bitset:查多个区间的数,想到莫队. 考虑bitset的每一位如何对应每个数的不同出现次数.只要离散化后不去重,每次记录time就可以了. 但是如果对 ...

  9. Maven入门指南③:坐标和依赖

    1 . 坐标 maven 的所有构件均通过坐标进行组织和管理.maven 的坐标通过 5 个元素进行定义,其中 groupId.artifactId.version 是必须的,packaging 是可 ...

  10. 使用Puppeteer进行数据抓取(二)——Page对象

    page对象是puppeteer最常用的对象,它可以认为是chrome的一个tab页,主要的页面操作都是通过它进行的.Google的官方文档详细介绍了page对象的使用,这里我只是简单的小结一下. 客 ...