在项目的开发中会涉及到很多背景的设置和使用,可以使用设计师切好的图片,但是对于一些纯色的背景来说建议可以使用shape绘图,使用xml的方式来绘制的可以根据需要进行绘制和更改,同时比图片要小,也不会导致apk过大,使用的时候在res/drawable下新建一个xml文件;
输入xml文件的名称,选择shape,点击确定就建好了,首先指定绘制的类型;
这里有四种类型:rectangle(矩形) oval(椭圆形) line(直线形) ring(环形) ;这里还有个android:useLevel;如果当做是LevelListDrawable使用时值为true,否则为false;接下来的话有这些属性可以设置;
corners圆角:
android:radius 所有圆角
android:topRightRadius 右上圆角
android:topLeftRadius 左上圆角
android:bottomLeftRadius 左下圆角
android:bottomRightRadius 右下圆角
stroke描边:
<stroke
android:width="" 描边的宽度
android:color="" 描边的颜色
android:dashWidth="" 虚线的宽度,值为0时是实线
android:dashGap="" 虚线的间隔
gradient渐变效果
<gradient
android:angle="" 渐变角度,必须为45的倍数,0为从左到右,90为从上到下
android:centerColor="" 渐变中间点的颜色
android:centerX="" 渐变中心X的相当位置
android:centerY="" 渐变中心Y的相当位置
android:endColor="" 渐变终点的颜色
android:gradientRadius="" 渐变的半径
android:startColor="" 渐变开始的颜色
android:type="" 渐变的类型 有三种;linear(线性渐变),radial(放射渐变)sweep(扫描式渐变)
android:useLevel="" 使用LevelListDrawable时就要设置为true,设为false时才有渐变效果
padding内边距
<padding
android:bottom="" 下边距
android:left="" 左边距
android:right="" 右边距
android:top="" 上边距
size大小
<size
android:width="" 宽
android:height="" 高
solid填充的颜色
<solid
android:color="" 填充颜色
上面这些基本就是shape绘制时会用到的一些属性,下面是绘制的一些基本效果:
圆:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval"
android:useLevel="false">
<solid
android:color="@android:color/holo_red_dark" />
</shape>
在圆1的基础上添加一个描边就可以得到圆2的效果:
<stroke
android:width="2dp"
android:color="@color/colorPrimary"/>
在圆2的基础上修改下填充的颜色就可以得到圆3的效果:
<solid android:color="@android:color/transparent"/>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
android:useLevel="false">
<solid android:color="@android:color/holo_red_dark" />
</shape>
这样就实现了矩形1的效果,在矩形1的基础上添加一个描边就得到矩形2的效果:
<stroke
android:width="2dp"
android:color="@color/colorPrimary"/>
矩形2的基础上添加圆角就得到矩形3的效果:
<corners
android:radius="7dp"/>
在矩形3的基础上去掉左下和右下圆角就得到矩形4的效果:
<corners
android:topRightRadius="7dp"
android:topLeftRadius="7dp"/>
在矩形3的基础上去掉左上和右上圆角就得到矩形5的效果:
<corners
android:bottomLeftRadius="7dp"
android:bottomRightRadius="7dp"/>
当然了在矩形3的基础上去掉描边就可以得到矩形6的效果了;
圆+描边+渐变效果:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval"
android:useLevel="false">
<solid android:color="@android:color/holo_red_dark" />
<corners android:radius="7dp" />
<stroke
android:width="2dp"
android:color="@android:color/holo_orange_dark" />
<gradient
android:centerColor="@android:color/black"
android:endColor="@color/colorPrimary"
android:startColor="@color/colorAccent"
android:type="sweep" />
</shape>
圆角矩形+描边+渐变效果
:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
android:useLevel="false">
<solid android:color="@android:color/holo_red_dark" />
<corners android:radius="7dp" />
<stroke
android:width="2dp"
android:color="@android:color/holo_orange_dark" />
<gradient
android:centerColor="@android:color/black"
android:endColor="@color/colorPrimary"
android:startColor="@color/colorAccent"
android:type="sweep" />
</shape>
shape绘图可以弄出很多不同的效果,开发中自己可以根据自己的需要进行属性的设置,如果上面写的不多的地方,欢迎交流。