博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android动画介绍之 自己定义Animation动画实现qq抖一抖效果
阅读量:7106 次
发布时间:2019-06-28

本文共 1613 字,大约阅读时间需要 5 分钟。

昨天我们介绍了Animation的基本使用方法。小伙伴们了解的怎么样了?假设还没有了解过Animation的小伙伴能够看看这篇博客

安卓内置的四种动画尽管说能够用AnimationSet进行组合操作,可是这些组合往往在特定场合是不够用的,就像view一样。我们能够自己定义动画效果。

今天要做成的效果是模仿qq的抖一抖效果,老规矩,先来看今天的效果图:

自己定义动画的实现方法为 继承Animation类重写applyTransformation()方法

public class CustomAnimation extends Animation {    @Override    protected void applyTransformation(float interpolatedTime, Transformation t) {        t.getMatrix().setTranslate((float)Math.sin(interpolatedTime*50)*20,0);        super.applyTransformation(interpolatedTime, t);    }}
能够看到 applyTransformation()方法有两个參数  第一个參数interpolatedTime代表一个0-1逐渐增大的float。 t代表view所须要的变化,比如t.setAlpha();  t.setTranslate();顾名思义这两个方法是发生透明度变化和位移变化。

那么我们今天的目标是实现抖一抖效果。思路例如以下: view先向左位移,再向右位移。 坐标为  (0-n,0) --->(0+n,n),一正一负的变化,就要用到我们的三角函数了。所以这里t.setTranslate(Math.sin())。

这样基本上我们的自己定义 动画就完毕了,接下来在MainActivity下获取当前的布局,给他加入动画效果

public class MainActivity extends ActionBarActivity {    private Button mButton;    private RelativeLayout mRelativeLayout;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mButton = (Button) findViewById(R.id.shake);        mRelativeLayout = (RelativeLayout) findViewById(R.id.relativelayout);        final CustomAnimation ca = new CustomAnimation();        ca.setDuration(1000);        mButton.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                mRelativeLayout.startAnimation(ca);            }        });    }}

这样便大功告成!假设喜欢我的博客,请点赞哦

转载于:https://www.cnblogs.com/yutingliuyl/p/6796428.html

你可能感兴趣的文章
Citrix Licensing Help
查看>>
究极!ThinkPHP 3.2.2 框架源码逐行分析(一)
查看>>
linux学习(2)--指令
查看>>
Dubbo基础篇_02_Zookeeper注册中心安装测试
查看>>
mysql慢查询日志
查看>>
sed 常用命令总结
查看>>
unity中经常用到的语句(1)
查看>>
Ubuntu 18.04下可视文件管理器Midnight Commander的安装使用
查看>>
sqoop内部结构
查看>>
MySQL5.7 切不要"乱射" --transaction-write-set-extraction=MURMUR32
查看>>
ip tcp udp首部
查看>>
C#中文件操作类FileUtil
查看>>
前端知识点
查看>>
安装并配置基于虚拟用户的vsftpd
查看>>
Activity间用Intent和Bundle传递参数
查看>>
【C1】scala入门
查看>>
http请求状态码和请求信息的含义
查看>>
关于假设检验
查看>>
MapReduce原理(分布式计算模型)----------总结
查看>>
Linux学习笔记(九)--命令学习(文件与目录查看)
查看>>