📅  最后修改于: 2023-12-03 15:13:21.306000             🧑  作者: Mango
在 Android 中绘制各种形状的背景和边框需要用到 GradientDrawable,它是一个可绘制的 Shape 类型,能够绘制矩形、椭圆形、环形和渐变等形状。本文将介绍 GradientDrawable 的使用方法。
通常,GradientDrawable 可以根据以下属性来进行定制:
在 XML 中,我们可以这样使用 GradientDrawable:
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FF8800"/>
<stroke android:width="1dp" android:color="#000000"/>
<corners android:radius="5dp"/>
</shape>
将以上代码放进 drawable 文件夹中的 XML 文件,通过以下方式使用:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="My Button"
android:background="@drawable/my_button_background"/>
这里,@drawable/my_button_background
就是我们创建的背景资源。
我们也可以在代码中动态使用 GradientDrawable。下面是一个示例,建立了一个带倒角的圆形按钮:
GradientDrawable drawable = new GradientDrawable();
drawable.setColor(0xFF8800);
drawable.setStroke(1, 0xFF000000);
drawable.setShape(GradientDrawable.OVAL);
drawable.setCornerRadii(new float[]{5, 5, 5, 5, 5, 5, 5, 5});
这里,setCornerRadii
方法接受四个值,分别表示左上、右上、右下、左下边角的角度,每两个值表示一个角度,不同角度之间用逗号隔开。
GradientDrawable 还支持线性渐变和径向渐变。下面是一个线性渐变示例:
int[] colors = {0xFF0000FF, 0xFF00FF00, 0xFFFF0000};
GradientDrawable drawable = new GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT, colors);
这里,Orientation
属性表示渐变方向,接受的值有:LEFT_RIGHT
、RIGHT_LEFT
、TOP_BOTTOM
、BOTTOM_TOP
、TL_BR
、TR_BL
、BL_TR
、BR_TL
。
径向渐变示例:
float centerX = 0.5f;
float centerY = 0.5f;
GradientDrawable drawable = new GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT, new int[]{Color.RED, Color.BLUE});
drawable.setGradientType(GradientDrawable.RADIAL_GRADIENT);
drawable.setGradientRadius(0.5f);
drawable.setGradientCenter(centerX, centerY);
这里,setGradientType
方法指定使用什么类型的渐变,接受的值有:LINEAR_GRADIENT
(线性渐变)、RADIAL_GRADIENT
(径向渐变)、SWEEP_GRADIENT
(扫描式渐变)。
setGradientRadius
中的值表示渐变的半径,setGradientCenter
中的两个值表示渐变圆心的位置。
GradientDrawable 在 Android 中是一个非常实用的组件。它可以帮助开发者轻松地实现各种形状的背景和边框,并且支持丰富的渐变效果。