View 添加阴影效果
CrazyShadow
说明:
CrazyShadow 是一个专门为 View 添加阴影效果的库。 设计 CrazyShadow 主要是因为自己一直想为最近编写的SpinMenu 与 ThumbnailMenu 还有将要完成的 ActivitySwitch 添加阴影效果,之前在网上一直没有找到合适的可以用的参考案例。所以只能 自己去编写这样一个 library。
而在实际运用在,发现理想总是丰满的,现实很骨感。虽然可以实现优美的效果以及多功能性,但是使用场景比较单一:只能 为传统的矩形 UI(即最终显示效果)添加阴影。为什么结果会是这样呢?大家都知道,一个 View 显示的模型肯定是一个矩形,不 管如何自定义 View 都有 left、top、right、bottom 以及 width、height 等一些概念,而这些概念也定位了 View 的模 型必定为一个矩形。所以 阴影效果的添加依据模型必定也是一个矩形。
虽然有了很多限制,我想既然都做了,还是尽自己最大努力吧,目前 CrazyShadow 支持三种方式为 View 添加阴影效果。
wrap : 以包装 View 的方式添加阴影效果。该方式会改变 View 的大小。因为如果保持 View 大小不变同时又在 View 四周添加了阴影,那么 View 的尺寸定会比之前大,这样可能会引起 View 周围其他 View 的位置变化。
fall : 以 View 的根视图(DecorView 中的 FrameLayout) 中添加一层阴影效果。不过因为与 View 不在一个布局层面上,所以当发生用户交互使原 View 的位置发生改变后,阴影还是会留在原来的位置。此种方式只能在位置不会发生改变的 View 上使用。慎用啊
drawable : 直接创建一个附带阴影效果的矩形(支持圆角) drawable 作为 View 的 background, 简单粗暴。不过因为 background 的最大尺寸为原 View 的尺寸,所以设置了阴影后,原 View 大小会依据配置的阴影大小发生变化,并且原 View 的位置会向上的偏移来显示出阴影的效果。
Preview
Import
导入 cslibrary Module 中的 作为依赖库,后期看情况是否上传到 Jcenter
Usage
new CrazyShadow.Builder().setContext(this).setDirection(CrazyShadowDirection.ALL).setShadowRadius(dip2Px(3)).setCorner(dip2Px(5)).setBackground(Color.parseColor("#96a993")).setImpl(CrazyShadow.IMPL_DRAW).action(findViewById(R.id.relay_draw1));
更多示例代码可以查看 MainActivity
Attribute
属性 | 说明 |
---|---|
impl | 以何种方式添加阴影,支持 wrap、fall、drawable 三种方式 |
baseShadowColor | 阴影的基本颜色,即最深的颜色,与 colors 表示为同一个作用, 如果 baseShadowColor 与 colors 都不设置,阴影会使用默认颜色 |
background | 修改 View 的背景色,如果使用 drawable 方式添加阴影,那么该属性必须添加 |
colors | 绘制阴影时需要的一个颜色由深到浅且长度为 3 的数组, 该属性与 baseShadowColor 起同一个作用,如果单单只设置 baseShadowColor 也会自动转换成为 colors |
corner | 阴影顶点的内侧弧度。以适配被设置的 View 是圆角的情况, 对使用 drawable 方式设置阴影时,该属性表示为圆角矩形背景的圆角角度 |
shadowRadius | 阴影大小 |
direction | 设定阴影在 View 上显示的方位, 支持的方位详情可以查看 CrazyShadowDirection |
Method
方法 | 说明 |
---|---|
make | 为 View 添加阴影效果, 使用 Builder 的 action 方法时会自动调用 |
remove | 移除阴影 |
hide | 隐藏阴影,与 remove 不同的是,hide 只是隐藏了 View 周围的阴影效果,并没有移除 |
show | 如果调用了 hide ,可以再使用 show 将阴影效果显示出来 |
View 添加阴影效果相关推荐
- android 四周发散阴影,view 添加四周阴影效果
self.bgView.layer.shadowOffset = CGSizeMake(1,1); self.bgView.layer.shadowOpacity = 0.3; self.bgView ...
- iOS View添加四周阴影
在开发过程中,给一个View添加阴影效果可能会经常遇到,那我们如何实现一个简单的阴影效果呢? 代码如下: /// 添加四边阴影效果 + (void)addShadowToView:(UIView*)s ...
- android 按钮带图标 阴影_Android实现图片添加阴影效果的2种方法
给图片添加阴影效果,这是很常见的需求.第一种方法是自定义drawable,使用layer-list定义两个图片,代码如下: show_view.xml: android:top="5dp&q ...
- html如何给文字添加阴影效果,css中怎么给字体添加阴影效果
css中可以使用text-shadow属性给字体添加阴影效果,text-shadow是CSS样式属性单词,是设置对象中文本的文字字体是否有阴影及模糊效果的CSS样式. text-shadow属性的语法 ...
- android 代码加view,Android中将View添加至窗口的源码分析
本文主要内容是讲解一个视图View或者一个ViewGroup对象是如何添加至应用程序窗口中的.下文中提到的窗口可泛指我们能看到的界面,包括一个Activity呈现的界面(我们可以将之理解为应用程序窗口 ...
- java 图片阴影_Java如何为 PPT 中的图形添加阴影效果
在PowerPoint文档中,给图片添加阴影效果能增强图片的逼真度,使其贴近现实效果,提升文档的美观度. 本文将展示如何使用Free Spire.Presentation for Java为PPT中的 ...
- Android之BaseQuickAdapter(3.0.4版本)给子view添加点击事件(helper.addOnClickListener(view))的函数没了
1.问题 用BaseQuickAdapter给子view添加点击事件,以前都是在适配器里面这么写的helper.addOnClickListener(view),现在这个函数没了 2.解决办法 直接在 ...
- java 图片阴影_Java 为 PPT 中的图形添加阴影效果
在PowerPoint文档中,给图形添加阴影效果能增强图形的立体感,使其贴近现实效果,提升文档的美观度. 本文将展示如何使用Free Spire.Presentation for Java为PPT中的 ...
- ios view添加上边框_iOS开发之如何给View添加指定位置的边框线详解
本文主要给大家介绍了关于iOS如何给View添加指定位置边框线的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 略微封装了一下,给View添加指定位置的边框线,其中位移枚举 ...
- ios 绘制线框_iOS开发 给View添加指定位置的边框线
略微封装了一下,给View添加指定位置的边框线,其中位移枚举的使用询问了哥们儿,总算搞定: 封装一:直接封装成了一个方法 /// 边框类型(位移枚举) typedef NS_ENUM(NSIntege ...
最新文章
- PX4编写msg文件
- python 一次编辑
- JVM:7种垃圾回收器总结
- php中添加分类的界面设计,zblog php新增自定义分类模板和文章模板
- windebug常用命令
- 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 11丨产品销售分析 III【难度中等】
- Java SSM4——Spring
- hive实现根据用户分组,按用户记录求上下两条记录的时间差
- Spark学习之第一个程序打包、提交任务到集群
- 使用GDAL的MEM内存文件保存临时文件
- (Photo Metadata Remover)Android App 一键去除照片 EXIF 隐私信息
- 神经网络中的激活函数
- day22 随机输出ArrayList
- oracle同时删除一行数据,oracle 多表删除 同时删除多表中关联数据
- bat脚本 启动另一个bat
- express router路由管理中间件
- 大学计算机系的电视剧,陈若轩成肖奈之后又一个计算机系校草!合作徐娇和最美学姐...
- office2020与2016版的不同_office2019和2016区别|Office2019新功能
- 【Web 基础】Cookie
- 动易html在线编辑器 漏洞,动易NewComment.asp注入漏洞