美文网首页Android
android使用shape绘图

android使用shape绘图

作者: 刘孙猫咪 | 来源:发表于2017-07-01 18:38 被阅读0次

    在项目的开发中会涉及到很多背景的设置和使用,可以使用设计师切好的图片,但是对于一些纯色的背景来说建议可以使用shape绘图,使用xml的方式来绘制的可以根据需要进行绘制和更改,同时比图片要小,也不会导致apk过大,使用的时候在res/drawable下新建一个xml文件;

    QQ截图20170701173358.jpg

    输入xml文件的名称,选择shape,点击确定就建好了,首先指定绘制的类型;

    QQ截图20170701173936.jpg

    这里有四种类型:rectangle(矩形) oval(椭圆形) line(直线形) ring(环形) ;这里还有个android:useLevel;如果当做是LevelListDrawable使用时值为true,否则为false;接下来的话有这些属性可以设置;

    QQ截图20170701174452.jpg

    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绘制时会用到的一些属性,下面是绘制的一些基本效果:

    QQ截图20170701180514.jpg

    圆:

    <?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"/>
    
    QQ截图20170701181243.jpg
    <?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的效果了;
    圆+描边+渐变效果:

    QQ截图20170701183029.jpg
    <?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>
    

    圆角矩形+描边+渐变效果


    QQ截图20170701183517.jpg

    <?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绘图可以弄出很多不同的效果,开发中自己可以根据自己的需要进行属性的设置,如果上面写的不多的地方,欢迎交流。

    相关文章

      网友评论

        本文标题:android使用shape绘图

        本文链接:https://www.haomeiwen.com/subject/wzhgcxtx.html