shape的使用

android在布局边缘位置处理圆角的两个办法:

1),一个是直接让美工切一张带有圆角的图片。

2),使用shape来解决。

第一种不在赘述,主要讲一下第二中方法来实现。

上边缘出现圆角,下边缘正常的shape处理:

文件位置:drawable/shape_top.xml

shape_top.xml

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

    <item android:state_pressed="true"><shape>
            <gradient android:angle="270" android:endColor="#f0f0f0" android:startColor="#f0f0f0" />

            <stroke android:width="1dp" android:color="#dddddd" />

            <corners android:topLeftRadius="5dp" android:topRightRadius="5dp" />

            <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
        </shape></item>
    <item android:state_focused="true"><shape>
            <gradient android:angle="270" android:endColor="#f0f0f0" android:startColor="#f0f0f0" />

            <stroke android:width="1dp" android:color="#dddddd" />

            <corners android:topLeftRadius="5dp" android:topRightRadius="5dp" />

            <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
        </shape></item>
    <item><shape>
            <gradient android:angle="270" android:endColor="#ffffff" android:startColor="#ffffff" />

            <stroke android:width="1dp" android:color="#ffffff" />

            <corners android:topLeftRadius="5dp" android:topRightRadius="5dp" />

            <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
        </shape></item>

</selector>

在布局文件中加上android:background="@drawable/shape_top"

没有圆角的shape设置:

文件位置:drawable/shape_middle.xml

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

    <item android:state_pressed="true"><shape>
            <gradient android:angle="270" android:endColor="#f0f0f0" android:startColor="#f0f0f0" />

            <stroke android:width="1dp" android:color="#dddddd" />

            <corners android:bottomLeftRadius="0dp" android:bottomRightRadius="0dp" />

            <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
        </shape></item>
    <item android:state_focused="true"><shape>
            <gradient android:angle="270" android:endColor="#f0f0f0" android:startColor="#f0f0f0" />

            <stroke android:width="1dp" android:color="#dddddd" />

            <corners android:bottomLeftRadius="0dp" android:bottomRightRadius="0dp" />

            <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
        </shape></item>
    <item><shape>
            <gradient android:angle="270" android:endColor="#ffffff" android:startColor="#ffffff" />

            <stroke android:width="1dp" android:color="#ffffff" />

            <corners android:bottomLeftRadius="0dp" android:bottomRightRadius="0dp" />

            <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
        </shape></item>

</selector>

在布局文件中加上android:background="@drawable/shape_middle"

下边缘出现圆角,上边缘不出现圆角的功能实现:

位置:drawable/shape_down.xml

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

    <item android:state_pressed="true"><shape>
            <gradient android:angle="270" android:endColor="#f0f0f0" android:startColor="#f0f0f0" />

            <stroke android:width="1dp" android:color="#dddddd" />

            <corners android:bottomLeftRadius="5dp" android:bottomRightRadius="5dp" android:topLeftRadius="5dp" android:topRightRadius="5dp" />

            <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
        </shape></item>
    <item android:state_focused="true"><shape>
            <gradient android:angle="270" android:endColor="#f0f0f0" android:startColor="#f0f0f0" />

            <stroke android:width="1dp" android:color="#dddddd" />

            <corners android:bottomLeftRadius="5dp" android:bottomRightRadius="5dp" android:topLeftRadius="5dp" android:topRightRadius="5dp" />

            <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
        </shape></item>
    <item><shape>
            <gradient android:angle="270" android:endColor="#ffffff" android:startColor="#ffffff" />

            <stroke android:width="1dp" android:color="#ffffff" />

            <corners android:bottomLeftRadius="5dp" android:bottomRightRadius="5dp" android:topLeftRadius="5dp" android:topRightRadius="5dp" />

            <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
        </shape></item>

</selector>

在布局文件中加上android:background="@drawable/shape_down"

希望对各位有所帮助,如果有错误,请指正。谢谢

原文地址:https://www.cnblogs.com/androidsuperman/p/3404845.html