【开源】LLMAnimator 60多种动画让你的应用动起来

github:  https://github.com/brookshi/LLMAnimator ,欢迎star/fork 。之前做android的时候需要给应用加些动画效果,在github上找到这个库:https://github.com/daimajia/AndroidViewAnimations,用起来挺方便,效果也不错。

现在做uwp,想要加些动画就想到这个库,于是开发了LLMAnimator,算是上面android库的uwp移植版本。

先看效果:

用起来也很简单:

1 Animator.Use(AnimationType.Bounce)  //使用哪种动画
2         .SetDelay(TimeSpan.FromSeconds(3))  //延迟执行,默认立即执行
3         .SetDuration(TimeSpan.FromMilliseconds(1000))  //动画播放时间,每个动画都有自己的默认时间,一般不需要设置
4         .SetRepeatBehavior(new RepeatBehavior(10))  //重复次数,默认1次
5         .PlayOn(target);  //动画目标
6 
7 Animator.Use(AnimationType.Bounce).PlayOn(target);  // 一般这样就好了,简单

动画类型都在AnimationType里面,有63种,算是包括各种常用的了,免去了自己创建动画一个一个写storyboard的痛苦。

 1 public enum AnimationType
 2     {
 3         Bounce,
 4         Flash,
 5         Pulse,
 6         RubberBand,
 7         Shake,
 8         StandUp,
 9         Swing,
10         Tada,
11         Wave,
12         Wobble,
13 
14         BounceIn,
15         BounceInDown,
16         BounceInUp,
17         BounceInLeft,
18         BounceInRight,
19 
20         FadeIn,
21         FadeInDown,
22         FadeInUp,
23         FadeInLeft,
24         FadeInRight,
25 
26         FadeOut,
27         FadeOutDown,
28         FadeOutUp,
29         FadeOutLeft,
30         FadeOutRight,
31 
32         FlipInX,
33         FlipInY,
34 
35         FlipOutX,
36         FlipOutY,
37 
38         RotateIn,
39         RotateInDownLeft,
40         RotateInDownRight,
41         RotateInUpLeft,
42         RotateInUpRight,
43 
44         RotateOut,
45         RotateOutDownLeft,
46         RotateOutDownRight,
47         RotateOutUpLeft,
48         RotateOutUpRight,
49 
50         SlideInDown,
51         SlideInUp,
52         SlideInLeft,
53         SlideInRight,
54 
55         SlideOutDown,
56         SlideOutUp,
57         SlideOutLeft,
58         SlideOutRight,
59 
60         ZoomIn,
61         ZoomInDown,
62         ZoomInUp,
63         ZoomInLeft,
64         ZoomInRight,
65 
66         ZoomOut,
67         ZoomOutDown,
68         ZoomOutUp,
69         ZoomOutLeft,
70         ZoomOutRight,
71 
72         Hinge,
73         RollIn,
74         RollOut,
75         DropOut,
76         Landing,
77         TakingOff,
78     }

View Code

如果有其他动画需求,也可以留言。

实现也很简单,以Bounce为例:

 1 public class BounceAnimation : AnimationBase
 2     {
 3         public BounceAnimation()
 4         {
 5             Duration = TimeSpan.FromMilliseconds(800);
 6         }
 7 
 8         public override IAnimation PlayOn(UIElement target, Action continueWith)
 9         {
10             var transform = Utils.PrepareTransform(target, typeof(CompositeTransform));
11 
12             var storyboard = PrepareStoryboard(continueWith);
13 
14             AddAnimationToStoryboard(storyboard, transform, CreateAnimation(), "TranslateY");
15 
16             storyboard.Begin();
17 
18             return this;
19         }
20 
21         Timeline CreateAnimation()
22         {
23             DoubleAnimationUsingKeyFrames frames = new DoubleAnimationUsingKeyFrames();
24             var firstTimeSpan = TimeSpan.FromMilliseconds(Duration.TotalMilliseconds / 8);
25 
26             frames.KeyFrames.Add(new EasingDoubleKeyFrame()
27             {
28                 EasingFunction = new SineEase()
29                 {
30                     EasingMode = EasingMode.EaseIn
31                 },
32                 KeyTime = KeyTime.FromTimeSpan(firstTimeSpan),
33                 Value = -8,
34             });
35             frames.KeyFrames.Add(new EasingDoubleKeyFrame()
36             {
37                 EasingFunction = new BounceEase()
38                 {
39                     Bounces = 2,
40                     Bounciness = 1.3,
41                     EasingMode = EasingMode.EaseOut
42                 },
43                 KeyTime = KeyTime.FromTimeSpan(Duration),
44                 Value = 0,
45             });
46 
47             return frames;
48         }
49     }

和大家平常创建动画的过程一样,这个库只是把常用的动画都集合在一起,这样用起来很方便,希望大家喜欢。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏王磊的博客

Unity3D默认的快捷键

shift +方向键             向“向方向键前进” Windows系统Unity3D中的快捷键 组合键键功能 File 文件 Ctrl ...

3747
来自专栏布尔

ExtJS4预览:渲染过程重构和标准化

在过去的四年,ExtJs代码库已经进化了,新组件被加进来,编码标准也改进了。在这个过程中,为了重构旧组件有必要经常追溯回去以保证他们也被改进。 在ExtJS4...

20010
来自专栏拂晓风起

Cocos2d-js 3.0 颜色变换(调整sprite/图片的色调)

1262
来自专栏电光石火

Markdown 语法手册 (完整整理版)

1. 斜体和粗体 代码: *斜体*或_斜体_ **粗体** ***加粗斜体*** ~~删除线~~ 显示效果: ...

66410
来自专栏LeoXu的博客

requestWindowFeature的取值

requestWindowFeature(featrueId) 能启用窗体的扩展特性,它被用来应对开发程序时经常会遇到的全屏显示、自定义标题(使用按钮等控件)和...

721
来自专栏滕先生的博客

地图相关 MapKit框架介绍MKMapView控件对象的属性和方法MKAnnotation 大头针模型类大头针view显示类:MKPinAnnotationView 继承于 MKAnnotation

3037
来自专栏我杨某人的青春满是悔恨

仿【每天】首页动画

最近工作一直挺忙,偶有闲暇时都在翻看《iOS Animations by Tutorials》,受益良多,尤其是让我对Core Animation有了更深入的理...

732
来自专栏张高兴的博客

张高兴的 UWP 开发笔记:手机状态栏 StatusBar

3345
来自专栏互联网软件技术

下拉复选框

最近在项目开发中,有的地方用到了下拉复选框,于是再网上找了一下,有很多种写法,但自己感觉不是很好,又不想用插件,因为感觉引入的js太大,功能太繁杂,于是决定自己...

1514
来自专栏游戏杂谈

as3与php 上传多张图片demo

2、在一次添加的图片中如果超出最大上传数,忽略本次选中的所有图片(又得重新选一次,此现象普通存在于目前各大网站的flash批量上传中)

1302

扫码关注云+社区