项目要求使用XML制作背景,背景是一个圆形和圆角矩形的拼接,还要求有边框。如下图:
在网上调查了shape的用法,大家可以参考:
http://xianqu.org/2012/04/android-borders-and-radius-corners/
http://kofi1122.blog.51cto.com/2815761/521605
layer-list可以满足需求,同时需要使用到padding选项。
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
但无论如何设定,padding都没有效果。后来查到
http://stackoverflow.com/questions/1283085/padding-doesnt-affect-shape-in-an-xml-layout,是同样的问题。得知在shape中要设定padding的时候,需要直接写在item的属性里。实现代码如下:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:right="95px">
<shape android:shape="oval" >
<solid android:color="#FFFFFF" />
</shape>
</item>
<item android:left="150px" android:top="60px" android:bottom="60px" >
<shape android:shape="rectangle" >
<solid android:color="#FFFFFF" />
<corners android:radius="75px" />
</shape>
</item>
<item android:top="3px" android:bottom="3px" android:left="3px" android:right="98px">
<shape android:shape="oval" >
<gradient
android:endColor="#FFFAF0"
android:startColor="#F8F8FF"
android:type="linear" />
</shape>
</item>
<item android:top="63px" android:bottom="63px" android:left="153px" android:right="3px">
<shape android:shape="rectangle" >
<gradient
android:endColor="#FFFAF0"
android:startColor="#F8F8FF"
android:type="linear" />
<corners android:radius="72px" />
</shape>
</item>
</layer-list>
注:
后边的item会覆盖前边的item,这正是我们想要的效果。
为了显示边框,需要让后边的圆形和矩形,比前边的圆形和矩形略小几个像素。
当然可以使用stroke来显示边框效果,但是如果那样,矩形的一部分边框会显示在圆形里,不满足式样的要求。
另注:
gradient的几种式样:linear是线性渐变,从左到右或从上到下;sweep径向渐变,是圆心到圆边;radial是角度渐变,按照角度来变换颜色。
- 大小: 17 KB
分享到:
相关推荐
Android中使用Shape自定义形状
主要介绍了android shape的使用及渐变色、分割线、边框、半透明阴影,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
android 用shape画出来的颜色做背景时,动态的改变它的颜色属性。
android shape的使用
android-shape-imageview - 图片圆角、三角、五角、圆形、多角
android shape可以帮助我们实现很多的效果,比如:圆角、虚线边框、部分圆角、颜色的渐变等效果,同时源文件给出了android4.0系统下虚线会变成实线的解决办法。
Android shape属性详解
android 代码实现shape GradientDrawable
Android shape 属性深入用法 我的博客:http://blog.csdn.net/xiaoyuan511
Android Shape源码实例,通过shape可以为为视图设置圆角背景,既可以通过在xml文件中直接为视图设置背景,又可以通过在代码中动态设置。
android中shape的使用: http://blog.csdn.net/luohai859/article/details/41038443
1.实现阴影或模糊边效果方式: 2.通过shape来实现,具体是通过layer-list 多层叠放的方式实现的 ... <shape android:shape=rectangle> <padding android:bottom=2dp android:left=2dp android:rig
利用shape优化android UI
Android-shape标签的使用,让我们的界面更加高大上档次
Android控件美化之Shape的使用 里面事例非常好的。
介绍Shape支持的4种图形3种渐变色类型,包含demo程序与文档。
Android shape 绘制图形 Android 绘制图形可以使用shape也可以使用自定义控件的方式,这里我们说下shape的方式去实现。 在绘制图形之前,我们先来了解下shape的几个属性。 shape /* * 线行 圆形 矩形 / android:...
探索Android中selector和shape的结合使用
Android:shape的使用详解(2)http://blog.csdn.net/wangyanguiyiyang/article/details/50060829