一、线性shape使用
线形一般只用到stroke属性,基本能满足设置线形配置。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<stroke
android:width="8dp" //描边宽度
android:color="@color/colorAccent" //描边颜色
android:dashGap="6dp" //虚线间隔
android:dashWidth="20dp"> //虚线宽度
</stroke>
//虚线宽度和间隔都要同时设置大于0,否则一个等于0的时候,则都为实线。
</shape>
使用
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_gravity="center_horizontal"
android:layout_width="200dp"
android:layout_height="30dp"
android:gravity="center"
android:text="线性使用"
android:background="@drawable/le_shape_style"/>
<View
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:background="@drawable/le_shape_style"/>
</LinearLayout>
效果
二、椭圆形使用
椭圆形用到的属性可以有:
stroke-参考以上线性设置形状的边线
solid-填充效果
gradient-渐变效果(如果使用渐变,则solid无效果)
【这里要特别注意,属性是按照顺序进行绘制的,如果先绘制渐变,在绘制填充,则渐变没有效果】
padding-内边距效果
(椭圆形就无需使用圆角属性corners了,基本没什么效果)
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<stroke
android:width="8dp" //描边宽度
android:color="@color/colorAccent" //描边 颜色
android:dashGap="6dp" //虚线间距
android:dashWidth="20dp"></stroke> //虚线宽度
<solid android:color="#888888"/> //填充色(使用gradient之后无效)
<gradient
android:type="linear" //线性渐变
android:angle="90" //渐变角度
android:centerX="0.4" //渐变中心X位置
android:centerY="0.7" //渐变中心Y位置
android:startColor="#00FF00" //渐变开始颜色
android:endColor="#0000FF"/> //渐变结束颜色
<padding
android:left="10dp" //形状左边距
android:right="20dp" //形状右边距
android:bottom="10dp"/> //形状下边距
</shape>
使用:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_marginTop="30dp"
android:layout_gravity="center_horizontal"
android:layout_width="200dp"
android:layout_height="50dp"
android:gravity="center"
android:text="椭圆形使用"
android:textColor="@color/color_ffffff"
android:background="@drawable/le_shape_style"/>
<View
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="80dp"
android:background="@drawable/le_shape_style"/>
</LinearLayout>
效果:
三、矩形形状使用
矩形用到的形状可以有(包含椭圆用到的属性):
corners:圆角属性,比椭圆多了此属性,其他属性跟椭圆同样用法
stroke:参考以上线性设置形状的边线
solid:填充效果
gradient:渐变效果(如果使用渐变,则solid无效果)
【这里要特别注意,属性是按照顺序进行绘制的,如果先绘制渐变,在绘制填充,则渐变没有效果】
padding:内边距效果
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">'
<corners
android:radius="10dp" //圆角半径
android:bottomLeftRadius="80dp" //左下角圆角半径,
android:topRightRadius="30dp"/> //右上角圆角半径
<stroke
android:width="5dp"
android:color="@color/colorAccent"
android:dashGap="6dp"
android:dashWidth="20dp"></stroke>
<solid android:color="#888888"/>
<gradient
android:type="linear"
android:angle="90"
android:centerX="0.4"
android:centerY="0.7"
android:startColor="#00FF00"
android:endColor="#0000FF"/>
<padding
android:left="10dp"
android:right="20dp"
android:bottom="10dp"/>
</shape>
效果:
四、圆环使用
圆环用到的形状可以有
stroke:参考以上线性设置形状的边线
solid:填充效果
gradient:渐变效果
padding:内边距效果
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="ring"
android:useLevel="false"
android:thickness="10dp">
<solid android:color="#ff0000"/>
<gradient
android:type="linear"
android:angle="90"
android:centerX="0.4"
android:centerY="0.7"
android:startColor="#00FF00"
android:endColor="#0000FF"/>
<stroke
android:width="5dp"
android:color="@color/colorAccent"
android:dashGap="6dp"
android:dashWidth="20dp"></stroke>
<padding
android:left="10dp"
android:right="20dp"
android:bottom="10dp"/>
</shape>
使用:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_marginTop="30dp"
android:layout_gravity="center_horizontal"
android:layout_width="100dp"
android:layout_height="100dp"
android:gravity="center"
android:text="圆环使用"
android:textColor="#000000"
android:background="@drawable/le_shape_style"/>
<View
android:layout_marginTop="10dp"
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="80dp"
android:background="@drawable/le_shape_style"/>
</LinearLayout>
效果:
五、总结
上一篇: Android形状属性Shape的使用(一)
整理了shape的整体语法属性,这一篇主要针对每一种类型的使用进行了示例。
要注意的有几点:
》特性属性只有ring类型可以使用
》子标签都可以根据实际业务场景尝试着去使用
》子标签的绘制是从上到下按照顺序的,也就是后面的属性会覆盖前面的属性
很多效果需要我们结合布局在实际开发中进行探索,能掌握这些基础的语法及配置,相信都能很快熟练使用shape的。