Android自定义View系列之动态变化的Button

我的微信公众号:
这里写图片描述
如果你喜欢我的文章,欢迎关注我的微信公众号。

今天给大家介绍的是一款可以动态变化的按钮,如矩形变为圆形、圆形变为矩形、矩形先变为进度条然后再变为圆形,我们还是先看看效果图吧。
这里写图片描述

第一个按钮由矩形变为圆角矩形。
第二个按钮由矩形变为圆形。
第三个按钮由矩形变为进度条,进度条结束后变为圆形。

在此声明一下,效果实现我这里并非原创,我也是在github上面看到此效果,然后阅读源码,觉得不错,就通过自己的理解把此效果自己也实现了一下。

此控件的特效主要是形状的动态变换,比如背景色,宽度和高度,圆角弧度等属性,由于这里涉及变换的属性比较多,所以这里使用了Builder设计模式。

同样,我们还是需要自定义一些如下属性:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="DynamicButton">
        <attr name="dybtn_color" format="color"></attr>
        <attr name="dybtn_corner_radius" format="dimension"></attr>
        <attr name="dybtn_stroke_color" format="color"></attr>
        <attr name="dybtn_stroke_width" format="dimension"></attr>
        <attr name="dybtn_pressed_color" format="color"></attr>
    </declare-styleable>

    <declare-styleable name="ProgressButton">
        <attr name="pbtn_progresscolor" format="color"></attr>
        <attr name="pbtn_maxvalue" format="float"></attr>
        <attr name="pbtn_minvalue" format="float"></attr>
        <attr name="pbtn_progress" format="float"></attr>
    </declare-styleable>
</resources>

各属性意义如下:

dybtn_color:按钮的正常状态下的背景色
dybtn_corner_radius:按钮的圆角弧度
dybtn_stroke_color:按钮的边缘颜色
dybtn_stroke_width:按钮的边缘宽度
dybtn_pressed_color:按钮按下时的颜色
pbtn_progresscolor:进度条按钮的颜色
pbtn_maxvalue:进度条的最大值
pbtn_minvalue:进度条的最小值
pbtn_progress:进度条的当前进度

既然定义了属性,那么必然需要解析自定义属性,自定义属性通常在构造函数中进行,所以通常的做法是定义一个方法在所有构造函数中调用:

<
  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值