Android动画(三)-动画框架
来源:互联网 发布:linux 办公软件 编辑:程序博客网 时间:2024/06/07 07:55
概述
上两篇介绍了一些动画基础
Android动画(一)-视图动画
Android动画(二)-属性动画
但是开发中为了开发效率,我们通常是使用一些三方的库,有前辈已经封装了很完善的动画库,我们学习一下直接用,使用中还能探寻框架作者的设计思路,事半功倍,何乐不为~
1 常见动画框架
1.1 AndroidViewAnimations
NineOldAnimations一个老牌动画开源库了,JakeWharton大神的作品,大神提供的是框架类的思路,没有Demo,自己用起来还是蛮吃力的,那么这个事情已经有好人帮我们做了!
代码家的AndroidViewAnimations,Github地址:https://github.com/daimajia/AndroidViewAnimations
他封装了NineOld,并提供了一大包的动画效果可以供使用者选用。简单看下他的Demo。
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //1 停掉上一个动画 if (rope != null) { rope.stop(true); } Techniques technique = (Techniques) view.getTag(); //2 动画工厂生产YoYo rope = YoYo.with(technique) .duration(1200) .playOn(mTarget); } });
Techniques是一个枚举,列出了目前支持的动画。工厂类根据这个枚举创建出不同动画的类。playOn()创建了一个控制类把动画包装起来进行控制,并开启这个动画。
主要的还是枚举里面列出的动画条目,随便看一个类吧
public class ZoomOutRightAnimator extends BaseViewAnimator { @Override protected void prepare(View target) { ViewGroup parent = (ViewGroup) target.getParent(); int distance = parent.getWidth() - parent.getLeft(); getAnimatorAgent().playTogether( ObjectAnimator.ofFloat(target, "alpha", 1, 1, 0), ObjectAnimator.ofFloat(target, "scaleX", 1, 0.475f, 0.1f), ObjectAnimator.ofFloat(target, "scaleY", 1, 0.475f, 0.1f), ObjectAnimator.ofFloat(target, "translationX", 0, -42, distance) ); }}
它内部也是使用AnmitorSet包裹了属性动画,并提供了一个动画基类统一控制。
2 原理解析
占个坑!
阅读全文
0 0
- Android动画(三)-动画框架
- Android动画框架(三)----布局动画&Activity过渡动画
- Android动画框架(三)----布局动画&Activity过渡动画
- Android动画框架(三)----布局动画&Activity过渡动画
- Android动画详解(三) 属性动画
- Android动画案例(三)属性动画
- Android中的动画(三)属性动画
- Android动画之帧动画(三)
- Android动画框架, 属性动画
- Android动画(三):属性动画
- android动画(三)属性动画
- Android 动画杂谈 (三)
- Android动画系列(三)
- 动画(三)(转场动画, 动画组)
- Android 动画框架详解
- Android 动画框架详解
- Android 动画框架详解
- Android 动画框架详解
- ZookKeeper系列(四)
- elasticsearch 性能指标
- 分享获得Linux系统RHCE认证日记
- Mongodb常用命令
- C#项目中调用C++ DLL
- Android动画(三)-动画框架
- volatile和synchronized
- hive 启动时报错: Exception in thread "main" java.lang.RuntimeException: java.lang.
- ACM Contest and Blackout UVA
- 一行代码实现在32位的MD5字符串插入横杠
- 前端代码规范
- Windows下利用Cygwin搭建C/C++开发环境GCC
- MySQL连接两种方式
- jira管理员忘记密码