《Android 基础(二十六)》 渐变色圆角Button

本文总结了Android自定义View的基本用法和流程,通过一个实例展示了如何创建一个允许用户自定义圆角半径、颜色和渐变方向的渐变色圆角Button。详细解释了在attrs.xml中定义自定义属性、在代码中获取这些属性以及如何在布局文件中使用这些自定义属性。

###简介
总结下之前看的自定义View的内容,结合一个简单的例子,阐述下基本用法和大致的使用流程,这个例子比较简单,更复杂的自定义View,随着自己的学习,后面再慢慢添加。作为一个Android开发者,这部分应该是不可或缺的。

###自定义属性
位置:res/values/attrs.xml
格式:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="name_of_style">
        <attr name="name_of_attr" format="reference|string|color|boolean|dimension|enum|flag|float|fraction|integer"/>
    </declare-styleable>
</resources>
format 意义
reference 参考某一资源ID, 如R.drawable.xxx
string 字符串
### Android Shape Drawable 渐变色 示例 在Android中,`<shape>`标签可以用于定义Drawable资源,并支持渐变色的设置。以下是一个完整的示例,展示如何使用XML定义一个带有渐变色的Shape Drawable。 #### XML定义渐变色 可以在`res/drawable`目录下创建一个XML文件来定义渐变色。例如: ```xml <!-- res/drawable/gradient_shape.xml --> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 渐变效果 --> <gradient android:startColor="#FF5722" <!-- 渐变开始颜色 --> android:endColor="#FFC107" <!-- 渐变结束颜色 --> android:angle="270" /> <!-- 渐变角度 --> <!-- 圆角 --> <corners android:radius="16dp" /> <!-- 圆角半径 --> <!-- 描边 --> <stroke android:width="2dp" android:color="#dcdcdc" /> <!-- 描边颜色和宽度 --> <!-- 内边距 --> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> ``` #### 在布局中应用 定义好Drawable后,可以直接将其作为背景应用于任何控件,例如`Button`或`TextView`: ```xml <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/gradient_shape" android:text="渐变色示例" android:padding="16dp" android:textColor="#FFFFFF" /> ``` #### 动态设置渐变色 如果需要在代码中动态设置渐变色,可以使用`GradientDrawable`类。以下是一个示例: ```java GradientDrawable gradientDrawable = new GradientDrawable(); gradientDrawable.setColors(new int[]{Color.parseColor("#FF5722"), Color.parseColor("#FFC107")}); // 设置渐变颜色 gradientDrawable.setOrientation(GradientDrawable.Orientation.TOP_BOTTOM); // 设置渐变方向 gradientDrawable.setCornerRadius(16f); // 设置圆角半径 // 将Drawable设置为View的背景 View myView = findViewById(R.id.my_view); myView.setBackground(gradientDrawable); ``` 以上代码展示了如何通过Java代码动态创建一个带有渐变色的Drawable[^2]。 #### 注意事项 - `android:angle`属性值必须是45的倍数(如0、45、90等),并且以水平线为基准,顺时针计算[^1]。 - 如果需要更复杂的渐变效果(如径向渐变或扫描渐变),可以考虑使用自定义View并重写`onDraw()`方法[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AndroidKt

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值