Android高级动画(4)完结篇

目录

Android高级动画(1)http://www.jianshu.com/p/48554844a2db
Android高级动画(2)http://www.jianshu.com/p/89cfd9042b1e
Android高级动画(3)http://www.jianshu.com/p/d6cc8d218900
Android高级动画(4)http://www.jianshu.com/p/91f8363c3a8c

回顾

终于到了完结篇,简单对前面三篇做个总结。Android系统为我们提供了丰富的动画, 罗列如下:
Tween动画,属性动画,Frame动画,CircularReveal,Activity转场动画,5.0转场动画又分为Explode、Slide、Alpha、ShareElements,矢量动画,矢量动画分为pathMorphing、trimPath。为了弥补一矢量动画不能代码动态构建的缺点,我们自己封装了PathMorphingView和TrimPathView。对于复杂图形,我们不能手动计算路径的,可以使用GIMP、Illustrator这样的工具,但是这些工具生成path不可控,于是自己开发了PathController。

封装库

为了简化动画的使用,我尝试封装了一个简单的库,包含所有常用的动画,可以用最简单的链式调用实现各种动画。下面简单地举几个例子:

(1)对比写法

传统写法:

ImageView img = (ImageView )findViewById(R.id.img);
ObjectAnimator animator = ObjectAnimator.ofFloat(sectorView, "translationY", 0, 100);
animator.setDuration(1000);
animator.setRepeatCount(1);
animator.setRepeatMode(ValueAnimator.RESTART);
animator .start();

使用库写法:

CommonAnimator.translateY(img, 0, 100)
        .duration(1000)
        .repeat(ValueAnimator.RESTART, ValueAnimator.RESTART)
        .start();

链式调用的写法是不是看起来更清爽,更简洁呢。

(2)再看个旋转动画

CommonAnimator.rotateY(img, 0, 360)
        .duration(1000)
        .repeat(ValueAnimator.INFINITE, ValueAnimator.REVERSE)
        .decelerate()
        .start();

(3)再看个同步动画

CommonAnimator.playTogether(
        CommonAnimator.translateX(img, 0, 400),
        CommonAnimator.rotateY(img, 0, 360)
).duration(1000).start();

是不是超简洁,超清晰

(4)再看个序列动画

CommonAnimator.playSequentially(
        CommonAnimator.translateX(img, 0, 400),
        CommonAnimator.rotateY(img, 0, 360)
).duration(1000).start();

(5)再来看个frame动画

CommonAnimator.animateFrame(img, animatinResId).start();

也可以单独设置图片id和时间

int[] resIdArray = getRes();
int[] times = getTimes();
CommonAnimator.animateFrame(img, resIdArray, times).start();

也可以一帧一帧添加

CommonAnimator.animateFrame(img)
    .addFrame(R.mipmap.head_image_01, 100)
    .addFrame(R.mipmap.head_image_02, 100)
    .addFrame(R.mipmap.head_image_03, 100)
    .addFrame(R.mipmap.head_image_04, 100)
    .start();

// 或者传drawable
CommonAnimator.animateFrame(img)
    .addFrame(drawable1, 100)
    .addFrame(drawable2, 100)
    .addFrame(drawable3, 100)
    .addFrame(drawable4, 100)
    .start();

(6)再来看个path动画

CommonAnimator.animatePath(img, path)
        .duration(1000)
        .start();

(7)再来看个CircularReveal

CommonAnimator.circularReveal(img, img.getWidth() / 2, img.getHeight() / 2, 0, img.getWidth() / 2)
    .decelerate()
    .start();

同时这个库也包含了之前封装的适量动画的View,使用方法参考demo。

吃瓜群众

总结

看到这里,恭喜你终于看完了。但是事实上,动画这个话题是没有尽头的,各种新的效果在不断地设计出来,我们封装再多框架也不可能一劳永逸,唯有理解了每一种动画的本质,才能以不变应万变。最后说句题外话,移动开发到这个程度如果还有人认为动画不重要,那就不可挽救了。现在的App市场竞争这么激烈,除了功能强大之外,用户体验的要求也是越来越高,如果我们的App能有一些惊艳的动画,能有一些酷炫的交互效果,那对于提升用户体验是很有帮助的。

由于个人水平有限,四篇文章中难免会有错误和不当之处,如有发现,请在评论处留言,给予指正。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,482评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,377评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,762评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,273评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,289评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,046评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,351评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,988评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,476评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,948评论 2 324
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,064评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,712评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,261评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,264评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,486评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,511评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,802评论 2 345

推荐阅读更多精彩内容