之前一直觉得dataPath很好用,可以画各种矢量图。今天发现用shape画图也不错,记录一下自己用shape画的图。
一般使用shape就是定义形状、stroke边、solid内部、corners圆角等,代码
- <?xml version ="1.0" encoding ="utf-8"?>
- <shape xmlns:android="http://schemas.android.com/apk/res/android"
- android:shape="rectangle">
- <corners
- android:radius="@dimen/dp_10" />
- <solid
- android:color="?attr/colorBgKey" />
- <stroke android:width="@dimen/dp_1" android:color="@color/black"/>
- </shape>
然后,shape也可以处理一下复杂一点的。
、
这其实是画两层,一层是一个渐变圆,一层是是个实心圆。
shape分层就需要用到 layer-list 每一层用 item 包裹,在 item 中写具体的shape。其中item可以指定width、height、top、left、right、bottom来控制每一层的位置。
代码如下
- <?xml version="1.0" encoding="utf-8"?>
- <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
- <item
- android:width="@dimen/dp_30"
- android:height="@dimen/dp_30">
- <shape android:shape="oval">
- <gradient
- android:centerX="50%"
- android:centerY="50%"
- android:endColor="#00FF0000"
- android:gradientRadius="50%"
- android:startColor="#FFFF0000"
- android:type="radial" />
- </shape>
-
- </item>
- <item
- android:width="@dimen/dp_10"
- android:height="@dimen/dp_10" android:top="@dimen/dp_10" android:left="@dimen/dp_10">
- <shape android:shape="oval">
- <solid android:color="#FFFF0000"/>
- </shape>
- </item>
- </layer-list>
下面是一个拍照背景图片
也是用到layer-list,代码如下
- <?xml version ="1.0" encoding ="utf-8"?>
- <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
- <item>
- <shape android:shape="rectangle">
- <stroke
- android:width="@dimen/dp_5"
- android:color="?attr/colorBorder"
- android:dashWidth="@dimen/dp_10"
- android:dashGap="@dimen/dp_10" />
- <corners android:radius="@dimen/dp_15" />
- <solid android:color="?attr/colorBg" />
- </shape>
-
- </item>
- <item
- android:left="@dimen/dp_50"
- android:right="@dimen/dp_50">
- <shape android:shape="line">
- <stroke
- android:width="@dimen/dp_5"
- android:color="?attr/colorBorder" />
- </shape>
- </item>
- <item
- android:left="@dimen/dp_50"
- android:right="@dimen/dp_50">
- <rotate android:fromDegrees="90">
- <shape android:shape="line">
- <stroke
- android:width="@dimen/dp_5"
- android:color="?attr/colorBorder" />
-
- </shape>
- </rotate>
- </item>
- </layer-list>