Android形状属性Shape的使用(二)

一、线性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的。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值