用layer-list实现图片旋转叠加、错位叠加、阴影、按钮指示灯
先来看看一个简单的文件:
- <?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"/
用layer-list实现图片旋转叠加、错位叠加、阴影、按钮指示灯的更多相关文章
- js无刷新上传图片,服务端有生成缩略图,剪切图片,iphone图片旋转判断功能
html: <form action="<{:AppLink('circle/uploadimg')}>" id="imageform" me ...
- HTML5图片旋转
HTML5图片旋转 首先我们使用Cococs2dx-Js-Lite版,来创建一个工程,我们所需要的开发环境如下: 1,webstrom 2,google chrome浏览器 3,cocos2dx-Js ...
- iOS 图片旋转方法
iOS 图片旋转方法 通过 CGImage 或 CIImage 旋转特定角度 UIImage可通过CGImage或CIImage初始化,初始化方法分别为init(cgImage: CGImage, s ...
- iOS transform解决连续多次旋转缩放,实现图片旋转缩放效果
一.需求 实现imageView的缩放旋转效果,一般有两种方式: 1.底层加scrollview,利用scrollview的属性实现.(推荐这种,这是我比较后发现的,手势做缩放旋转会有点弊端) 2.利 ...
- 自己积累的一些Emgu CV代码(主要有图片格式转换,图片裁剪,图片翻转,图片旋转和图片平移等功能)
using System; using System.Drawing; using Emgu.CV; using Emgu.CV.CvEnum; using Emgu.CV.Structure; na ...
- PHPThumb处理图片,生成缩略图,图片尺寸调整,图片截取,图片加水印,图片旋转
[强烈推荐]下载地址(github.com/masterexploder/PHPThumb). 注意这个类库有一个重名的叫phpThumb,只是大小写的差别,所以查找文档的时候千万注意. 在网站建设过 ...
- jQuery图片旋转展示收缩效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- iOS_UIImage_图片旋转
一.目的: 有时候我们获得到的图片我们不是我们想要的方向,需要对图片进行旋转.比如:图片旋转90度180度等. 二.实现过程. 1.获取到该UIImage. 2.开启上下文. 3.上下文的具体操作. ...
- Rotating Image Slider - 图片旋转切换特效
非常炫的图片旋转滑动特效,相信会给你留下深刻印象.滑动图像时,我们会稍稍旋转它们并延缓各元素的滑动.滑块的不寻常的形状是由一些预先放置的元素和使用边框创建.另外支持自动播放选项,鼠标滚轮的功能. 在线 ...
- JQuery插件让图片旋转任意角度且代码极其简单
引入下方的jquery.rotate.js文件,然后通过$("选择器").rotate(角度);可以旋转任意角度, 例如$("#rotate-image").r ...
随机推荐
- day12--python操作mysql
本篇对于Python操作MySQL主要使用两种方式: 1.原生模块 pymsql(http://www.cnblogs.com/wupeiqi/articles/5713330.htm ...
- mysql varchar 转 decimal
在我们写代码的实际业务中,有时候实体类用的是String,数据库中自然是VARCHAR类型,但是如果这个实体的属性值放的是数字类型,你查询的时候又需要对它进行排序.sql怎么写呢. 别担心MySQL提 ...
- html5 利用谷歌地图显示当前位置
目前,google在国内需要FQ才能上,翻不了墙的话,只能获取到经纬度信息. *调用navigator.geolocation对象时,首先要获取用户同意. navigator.geolocation. ...
- 循序渐进学.Net Core Web Api开发系列【4】:前端访问WebApi
系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 前一篇文章 ...
- Orleans介绍
一.介绍 Orleans是一个框架,提供了一个直接的方法来构建分布式高规模计算应用程序 默认可扩展 -> Orleans处理构建分布式系统的复杂性,使您的应用程序能够扩展到数百台服务器.低延迟 ...
- UML类图-聚合和组合的区别
类图-组合和聚合 学习自 http://blog.sina.com.cn/s/blog_4ae8f77f0100ji5k.html http://blog.csdn.net/nodeathphoeni ...
- 数据转换bug花了半天时间 Java.math.BigDecimal cannot be cast to java.lang.String
从数据库取出一个 Count函数 统计的值 在代码中要转成Integer类型的时候 Integer.parseInt((String)map.get("ID_")) 报了一下错误: ...
- BZOJ.4939.[Ynoi2016]掉进兔子洞(莫队 bitset 分组询问)
BZOJ 洛谷 删掉的数即三个区间数的并,想到bitset:查多个区间的数,想到莫队. 考虑bitset的每一位如何对应每个数的不同出现次数.只要离散化后不去重,每次记录time就可以了. 但是如果对 ...
- Maven入门指南③:坐标和依赖
1 . 坐标 maven 的所有构件均通过坐标进行组织和管理.maven 的坐标通过 5 个元素进行定义,其中 groupId.artifactId.version 是必须的,packaging 是可 ...
- 使用Puppeteer进行数据抓取(二)——Page对象
page对象是puppeteer最常用的对象,它可以认为是chrome的一个tab页,主要的页面操作都是通过它进行的.Google的官方文档详细介绍了page对象的使用,这里我只是简单的小结一下. 客 ...