Android XML绘制图形(虚线、三角形、圆、圆角矩形等)

1、虚线

res/drawable/shape_test.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="line" >
    <stroke
        android:dashGap="3dp"
        android:dashWidth="6dp"
        android:width="1dp"
        android:color="@android:color/black" />
    <!-- 虚线的高度 -->
    <size android:height="1dp" />
</shape>

注意:如果在android 6.0上没有效果可以在代码中写

line.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

或者在布局文件中加入

android:layerType="software"

效果:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <View
        android:layout_width="match_parent"
        android:layout_height="5dp"
        android:layout_gravity="center_vertical"
        android:background="@drawable/shape_test" />

</FrameLayout>

2、三角形

res/drawable/shape_test.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <rotate
            android:fromDegrees="45"
            android:toDegrees="45"
            android:pivotX="-40%"
            android:pivotY="87%">
            <shape android:shape="rectangle">
                <solid android:color="@android:color/black" />
                <stroke
                    android:width="0.5dp"
                    android:color="@android:color/black" />
            </shape>
        </rotate>
    </item>
</layer-list>

效果:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <View
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_gravity="center"
        android:background="@drawable/shape_test" />

</FrameLayout>

3、圆形

res/drawable/shape_test.xml文件:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval"
    android:useLevel="false" >
    <solid android:color="@android:color/transparent" />
    <stroke
        android:dashGap="2dp"
        android:dashWidth="2dp"
        android:width="0.5dp"
        android:color="@android:color/black" />
</shape>

效果:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <View
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_gravity="center"
        android:background="@drawable/shape_test" />

</FrameLayout>

4、圆角矩形

res/drawable/shape_test.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

    <!-- 实心 -->
    <solid android:color="@android:color/transparent" />
    <!-- 渐变 -->
    <gradient
        android:angle="90"
        android:endColor="@android:color/black"
        android:startColor="@android:color/white" />
    <!--   描边  -->
    <stroke
        android:width="1dp"
        android:color="@android:color/black" />
    <corners android:radius="5dp" />
    <!--可以设置边距
       <padding
        android:bottom="10dp"
        android:left="10dp"
        android:right="10dp"
        android:top="10dp" />
    -->
</shape>

效果:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <View
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_gravity="center"
        android:background="@drawable/shape_test" />

</FrameLayout>

5、按钮触发效果

res/color/color_test.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:color="@android:color/holo_blue_bright"
        android:state_focused="true"
        android:state_pressed="true"
        />
    <item
        android:color="@android:color/holo_blue_bright"
        android:state_focused="false"
        android:state_pressed="true"
        />
    <item
        android:color="@android:color/holo_blue_bright"
        android:state_focused="true"
        />
    <item
        android:color="@android:color/holo_blue_dark"
        android:state_focused="false"
        android:state_pressed="false"
        />

</selector>

效果:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="点击变色"
        android:layout_gravity="center"
        android:textColor="@color/color_test" />

</FrameLayout>

6、简单动画

<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:drawable="@mipmap/loading_01"
        android:duration="200" />
    <item
        android:drawable="@mipmap/loading_02"
        android:duration="200" />
    <item
        android:drawable="@mipmap/loading_03"
        android:duration="200" />
    <item
        android:drawable="@mipmap/loading_04"
        android:duration="200" />
    <item
        android:drawable="@mipmap/loading_05"
        android:duration="200" />
    <item
        android:drawable="@mipmap/loading_06"
        android:duration="200" />
    <item
        android:drawable="@mipmap/loading_07"
        android:duration="200" />
    <item
        android:drawable="@mipmap/loading_08"
        android:duration="200" />
    <item
        android:drawable="@mipmap/loading_09"
        android:duration="200" />
    <item
        android:drawable="@mipmap/loading_10"
        android:duration="200" />
    <item
        android:drawable="@mipmap/loading_11"
        android:duration="200" />
    <item
        android:drawable="@mipmap/loading_12"
        android:duration="200" />
</animation-list>

在代码中写入

AnimationDrawable an = (AnimationDrawable) loding.getBackground();
an.start();
打赏