项目要求使用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是角度渐变,按照角度来变换颜色。

更多相关文章

  1. Android绘图系列(五)——绘制文本
  2. Android动态改变shape填充颜色
  3. Android(安卓)带进度的圆形进度条
  4. android给图片添加边框
  5. Android(安卓)UI设计中的三种特效
  6. Android中Rect和RectF的区别与联系
  7. Android(安卓)imageView 自定义单个或多个角为圆角及圆形图片工
  8. android圆形ImageView之CircleImageView
  9. Android之Canvas绘图

随机推荐

  1. RecyclerView调用smoothScrollToPosition
  2. Android不同层次开启硬件加速的方式
  3. android lcd横竖屏幕配置
  4. Android(安卓)自定义View 画圆 画线
  5. android 中滑动九宫格开机密码
  6. Android(安卓)事件总线OTTO源码解析
  7. android传递数据bundle封装传递map对象
  8. Android(安卓)中Webview 自适应屏幕
  9. Android(安卓)onTouchEvent、dispatchTou
  10. android知识拾遗——1