layer-list实现阴影和选择器效果
来源:互联网 发布:linux ubuntu安装 rpm 编辑:程序博客网 时间:2024/06/11 02:03
实现这个效果的话,不需要多高深的技术,但是关键是要有耐心和对细节完美的追求。先看效果图:
布局:
<LinearLayout android:layout_width="180dp" android:layout_height="40dp" android:orientation="horizontal" android:layout_gravity="center_horizontal" android:layout_margin="10dp" > <TextView android:id="@+id/tv_tab1" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:clickable="true" android:gravity="center" android:text="tab1" android:background="@drawable/layerlist_left_white_corner" /> <TextView android:id="@+id/tv_tab2" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:clickable="true" android:gravity="center" android:text="tab2" android:background="@drawable/layerlist_right_white_corner" /> </LinearLayout>
当初构思是给LinearLayout加个大圆角的背景,每个textview只负责设置selector, 结果没有效果,阴影不出现。给LinearLayout加个1px 的paading,阴影出现了,但是有个1px的间隔,就和美工做出的原型图有细微差别了,为了还原UI图,只好采用另外一种方法:即每个textview既负责阴影,也负责selector效果。
那就是layer-list和selector结合。
先看左边的效果:
- layer-list item第一层(底层)设置好圆角边框和边框颜色
- layer-list item第二层(上面一层)用selector描述。注意:设置bottom,top,left时,为什么没有right呢?因为右边按钮会设置这四个属性,左边再设置right,交叉部分就会有1px重叠现象。
代码:
<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape> <corners android:bottomLeftRadius="25dp" android:topLeftRadius="25dp"/> <!-- 边框颜色 --> <solid android:color="#dedede"/> </shape> </item> <item android:bottom="1dp" android:top="1dp" android:left="1dp"> <selector> <item android:state_selected="true"> <!--选中状态--> <shape> <corners android:bottomLeftRadius="25dp" android:topLeftRadius="25dp" /> <solid android:color="#ffff00"/> </shape> </item> <!--默认状态--> <item> <shape> <corners android:bottomLeftRadius="25dp" android:topLeftRadius="25dp"/> <solid android:color="#FFFFFF"/> </shape> </item> </selector> </item></layer-list>
同理,趁热打铁,再来个右边效果:
<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape> <corners android:bottomRightRadius="25dp" android:topRightRadius="25dp"/> <!-- 边框颜色 --> <solid android:color="#dedede"/> </shape> </item> <item android:bottom="1dp" android:right="1dp" android:top="1dp" android:left="1dp"> <selector> <item android:state_selected="true"> <!--选中状态--> <shape> <corners android:bottomRightRadius="25dp" android:topRightRadius="25dp" /> <solid android:color="#ffff00"/> </shape> </item> <!--默认状态--> <item> <shape> <corners android:bottomRightRadius="25dp" android:topRightRadius="25dp"/> <solid android:color="#FFFFFF"/> </shape> </item> </selector> </item></layer-list>
这样就大功告成了。layer-list也是属于drawable, 引用的时候通过”@drawable/layerlist_right_white_corner”。
0 0
- layer-list实现阴影和选择器效果
- layer-list实现阴影效果
- 使用layer-list实现阴影效果
- Android:阴影效果的另一种实现方法:layer-list
- 添加阴影布局效果(使用layer-list)实现
- Android中用layer-list编写阴影效果
- Android中用layer-list编写阴影效果
- Android中用layer-list编写阴影效果
- Android中用layer-list编写阴影效果
- 如何使用layer-list做出阴影效果
- Android中用layer-list编写阴影效果
- 利用layer-list创建阴影效果等
- Android layer-list的属性和使用详解(阴影、边框效果)
- 利用layer-list来制作阴影效果背景
- Android 文字阴影、layer-list、shape和selector使用
- Android layer-list 圆角阴影背景
- layer-list实现图层叠加的效果
- 使用layer-list实现文字下划线、边框线效果
- 类(2)
- QCache 缓存
- 性能优化二 高性能的索引策略
- 生成树的计数Matrix-Tree定理
- 利用urllib+beadutifulsoup编写自己的第一个小爬虫,获取美女图片
- layer-list实现阴影和选择器效果
- 正规式转确定有穷自动机(NFA)
- CCF消除类游戏JAVA答案
- uva694 The Collatz Sequence
- POJ3494
- 关于Pyhton虚拟环境
- 01-复杂度1 最大子列和问题
- Linux下stat + 文件名后, Access,Modify,Change的含义
- 12.PHP 预定义接口 --- 序列化接口