Android 用xml定义带阴影的图形
2016-07-19 23:13
537 查看
Android(Android 5之前的版本)在xml定义带阴影的方法的一种是定义一个drawable,用控件层叠样式layer-list结合shape来定义一个背景,然后把这个xml文件当做普通的drawable文件使用就可以了;
但是有一个不足之处在于对于矩形的控件如Textview只能设置上下边的阴影或者左右边的阴影;
layer-如下list文件
![](https://oscdn.geek-share.com/Uploads/Images/Content/201607/f493b8acf1bfdc5ee2b3d6902604dcbb)
主布局文件如下:
另一种方式是在android 5.0.1之后出现的新属性elevation,设置这个组件“浮”起来的高度,即可让组件显示3D效果或者使用translationZ设置组件偏离z轴的方向;
注意一定要设置背景,不然效果看不出来
效果如下:
但是有一个不足之处在于对于矩形的控件如Textview只能设置上下边的阴影或者左右边的阴影;
layer-如下list文件
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <!-- 第一个item代表的是显示在最底层的背景,另一个item则是前景, --> <item android:left="5dp" android:right="5dp"> <shape android:shape="rectangle"> <gradient android:angle="270" android:startColor="#ffffff" android:centerColor="#000000" android:endColor="#ffffff"/> </shape> </item> <!-- top和bottom分别表示前景的上边界和背景的上边界的距离,前景的下边界和背景的下边界之间的距离 --> <item android:top="6dp" android:bottom="6dp" android:left="5dp" android:right="5dp"> <shape android:shape="rectangle"> <solid android:color="#ffffff" /> </shape> </item> </layer-list>我在主布局文件中,设置了两个TextView,应用上面的背景之后,效果如下
主布局文件如下:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/list_view_text" android:layout_width="match_parent" android:layout_height="80dp" android:textColor="@android:color/black" android:layout_centerInParent="true" android:background="@drawable/bg_layer_list" android:padding="10dp" android:gravity="center" android:textSize="24sp" android:text="test1" /> <TextView android:id="@+id/list_view_text2" android:layout_width="match_parent" android:layout_height="80dp" android:textColor="@android:color/black" android:layout_centerInParent="true" android:background="@drawable/bg_layer_list" android:padding="10dp" android:gravity="center" android:layout_marginTop="20dp" android:layout_below="@id/list_view_text" android:textSize="24sp" android:text="test2" /> </RelativeLayout>
另一种方式是在android 5.0.1之后出现的新属性elevation,设置这个组件“浮”起来的高度,即可让组件显示3D效果或者使用translationZ设置组件偏离z轴的方向;
<TextView android:id="@+id/elevation_text" android:layout_width="150dp" android:layout_height="80dp" android:textColor="@android:color/black" android:layout_centerInParent="true" android:background="@android:color/white" android:elevation="15dp" android:layout_marginTop="30dp" android:gravity="center" android:textSize="24sp" android:text="elevation"/> <TextView android:layout_width="150dp" android:layout_height="80dp" android:textColor="@android:color/black" android:translationZ="10dp" android:translationX="10dp" android:gravity="center" android:layout_margin="30dp" android:layout_centerInParent="true" android:background="@android:color/white" android:layout_below="@id/elevation_text" android:textSize="24sp" android:text="translation"/>
注意一定要设置背景,不然效果看不出来
效果如下:
相关文章推荐
- XML 与 JSON 优劣对比
- As3.0 xml + Loader应用代码
- 网马生成器 MS Internet Explorer XML Parsing Buffer Overflow Exploit (vista) 0day
- ext读取两种结构的xml的代码
- 实例解析Ruby程序中调用REXML来解析XML格式数据的用法
- Ruby中XML格式数据处理库REXML的使用方法指南
- C#中如何使用 XmlReader 读取XML文件
- C#针对xml基本操作及保存配置文件应用实例
- Ruby使用REXML库来解析xml格式数据的方法
- Ruby程序中创建和解析XML文件的方法
- Ruby的XML格式数据解析库Nokogiri的使用进阶
- asp下查询xml的实现代码
- sqlserver FOR XML PATH 语句的应用
- 使用sp_xml_preparedocument处理XML文档的方法
- EBS xml publisher中文乱码问题及解决办法
- C#中的Linq to Xml详解
- C#代码操作XML进行增、删、改操作
- C#操作XML文件实例汇总
- C# XML序列化方法及常用特性总结分析