在 Android 中,shape 是一种常用的 Drawable 资源,用于创建具有圆角、边框、渐变等效果的背景。通常我们会在 res/drawable 文件夹下创建一个 XML 文件来定义 shape。以下是 shape
1. 创建 shape 文件
1. 在 res/drawable 文件夹中,右键选择 New > Drawable Resource File。
2. 给文件命名,例如 rounded_button.xml,然后点击 OK。
3. 在文件中定义 shape 元素的属性。
2. shape 的基本结构
shape
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 形状和属性定义 -->
</shape>
3. 常用属性
• solid:设置填充颜色。
• corners:设置圆角半径。
• stroke:设置边框颜色和宽度。
• padding:设置内容的内边距。
• gradient:设置渐变效果。
示例 1:创建圆角的 Button 背景
以下示例创建了一个带有圆角、填充颜色和边框的 Button
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!-- 设置填充颜色 -->
<solid android:color="#FF6200EE" />
<!-- 设置圆角半径 -->
<corners android:radius="16dp" />
<!-- 设置边框 -->
<stroke
android:width="2dp"
android:color="#FF3700B3" />
</shape>
• solid:填充颜色设置为紫色 #FF6200EE。
• corners:radius="16dp"
• stroke:边框宽度为 2dp,颜色为 #FF3700B3。
将此 shape 文件保存为 rounded_button.xml,然后可以在布局中通过 android:background="@drawable/rounded_button" 来引用。
示例 2:带有渐变的背景
以下示例为背景添加渐变效果,从左到右的线性渐变。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!-- 渐变效果 -->
<gradient
android:startColor="#FF6200EE"
android:endColor="#FF3700B3"
android:angle="0" />
<!-- 圆角半径 -->
<corners android:radius="8dp" />
</shape>
• gradient:定义渐变效果。
• startColor:渐变的起始颜色。
• endColor:渐变的结束颜色。
• angle="0":渐变方向,0 表示从左到右,270
示例 3:带圆角的边框(无填充)
以下示例创建一个只有圆角边框的背景,无填充颜色。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!-- 设置圆角边框 -->
<stroke
android:width="2dp"
android:color="#FF6200EE" />
<!-- 圆角半径 -->
<corners android:radius="12dp" />
</shape>
此 shape
示例 4:设置内边距
以下示例添加了内边距,适合需要在背景与内容之间留出空隙的情况。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!-- 填充颜色 -->
<solid android:color="#FF03DAC5" />
<!-- 圆角半径 -->
<corners android:radius="10dp" />
<!-- 内边距 -->
<padding
android:left="8dp"
android:top="8dp"
android:right="8dp"
android:bottom="8dp" />
</shape>
• padding:定义内容到边框的距离。
完整示例:带边框、填充色、渐变和圆角的 shape
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!-- 渐变填充 -->
<gradient
android:startColor="#FF6200EE"
android:centerColor="#FFBB86FC"
android:endColor="#FF3700B3"
android:angle="45" />
<!-- 圆角 -->
<corners android:radius="20dp" />
<!-- 边框 -->
<stroke
android:width="3dp"
android:color="#FFFFFF" />
</shape>
使用 shape 文件
将 shape 文件保存为 rounded_background.xml,可以在布局文件中引用:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/rounded_background"
android:text="Rounded Button"
android:textColor="#FFFFFF" />
总结
• solid:设置背景颜色。
• corners:设置圆角半径。
• stroke:设置边框颜色和宽度。
• gradient:设置渐变效果。
• padding:设置内边距。
通过灵活组合这些属性,你可以创建各种带有圆角、边框、渐变的背景效果。