按下按钮后做扩大(扩散)动画

需求
1、录音按钮,按住后,做扩散动画,显示:录音中;
2、默认状态,显示:按住录音;
3、松手后,控件做反向收缩动画

UI规定
1、默认,按钮有个背景色(纯色),尺寸为:116 * 40;
2、按住后控件扩散,扩散过程中,出现一条描边,扩散到最远处,且,背景色变成透明;
3、控件扩散后,最大尺寸为124 * 44;
4、动效时长250毫秒;
5、松手后,控件做收缩动画,效果与上面相反

效果图示例(静态图):
在这里插入图片描述
在这里插入图片描述
分析:
1、尺寸分析:
扩散前后对比:124/116= 1.0689… ;44/40 = 1.1 。为了方便实现,这里定为1.1。即,做动画时,从原始尺寸,扩大1.1倍。116 * 1.1=127.6>124;124/1.1=112.7 ;113 * 1.1=124.3 最接近125
2、在设置布局的时候,一开始,就设置为最大尺寸,这样,可以避免其他控件挤占录音控件的位置,或者,录音控件扩大时,挤占其他控件,引起界面其他控件的不必要重绘。
3、经过上面的计算,结论:(1)在误差允许范围内,默认尺寸为:113 * 40,扩大比例为1.1,控件最大区域:125 * 44

思路:
拆分3层:1、描边;2、纯色背景;3、文字和小图片。
因为动画时间很短,且,扩大比例不大,纯色背景,就只做透明度变化。没有随着描边扩散。一般也看不出来,这里“取巧”简化了。

代码不多,也简单,就直接上源码了
代码:
用到的颜色

<color name="line_color">#55ff0000</color>
<color name="bg_color">#5500ff00</color>

<color name="color_trans">#00000000</color>
<color name="color_white">#ffffff</color>
<color name="color_black">#000000</color>

1、工具类


import android.content.Context;
import android.content.res.Resources;
import android.graphics.drawable.GradientDrawable;

public class UiUtils {

    public static int dip
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值