shape [rectangle | oval | line | ring]四种不同的显示状态。
一、简单使用:
在res/drawable文件夹下创建一个跟标签为shape的文件如下:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!-- 定义shape的内部填充颜色-->
<solid android:color="@color/colorBtnNormal"
android:bottomLeftRadius="16dp"
android:bottomRightRadius="16dp"
android:topLeftRadius="24dp"
android:topRightRadius="24dp"/>
<corners
android:radius="8dp"/>
<!--<gradient
android:centerColor="@color/colorBtnNormal"
android:type="radial"
android:centerX="0.5"
android:gradientRadius="100"
android:endColor="#FFFFFF"
android:startColor="@color/colorBtnNormal"
android:useLevel="false"/>-->
</shape>
之后再布局文件中直接让background引用我们声明好的文件名就可以简单使用如下:
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="请求百度"
android:background="@drawable/shape_btn_normal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView"/>
也可以在selector中使用我们自定义好的shape如下
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/shape_btn_pause"/>
<item android:drawable="@drawable/shape_btn_normal"/>
</selector>
以上就是shape样式的简单使用。
二、shape中有六个基本属性(corners圆角定义,gradient渐变定义,padding内边距定义,size大小定义,solid定义内部填充颜色,stroke边框定义)
定义格式如下:
<corners //定义圆角
android:radius="dimension" //全部的圆角半径
android:topLeftRadius="dimension" //左上角的圆角半径
android:topRightRadius="dimension" //右上角的圆角半径
android:bottomLeftRadius="dimension" //左下角的圆角半径
android:bottomRightRadius="dimension" /> //右下角的圆角半径
<solid android:color="color" />
<gradient android:type=["linear" | "radial" | "sweep"] //共有3中渐变类型,线性渐变(默认)/放射渐变/扫描式渐变 android:angle="integer" //渐变角度,必须为45的倍数,0为从左到右,90为从上到下 这个属性只对线性渐变有效果 android:centerX="float" //渐变中心X的相当位置,范围为0~1 android:centerY="float" //渐变中心Y的相当位置,范围为0~1 android:startColor="color" //渐变开始点的颜色 android:centerColor="color" //渐变中间点的颜色,在开始与结束点之间 android:endColor="color" //渐变结束点的颜色 android:gradientRadius="float" //渐变的半径,只有当渐变类型为radial时才能使用 android:useLevel=["true" | "false"] /> //使用LevelListDrawable时就要设置为true。设为false时才有渐变效果
<stroke
android:width="dimension" //描边的宽度
android:color="color" //描边的颜色
// 以下两个属性设置虚线
android:dashWidth="dimension" //虚线的宽度,值为0时是实线
android:dashGap="dimension" /> //虚线的间隔
<size
android:width="dimension"
android:height="dimension" />
<padding android:left="dimension"
android:top="dimension" android:right="dimension" android:bottom="dimension" />