前言
尝试搜索了一下android 动画的中文资料,很多都是一些枯燥的翻译api的一些文档,很少有系统讲解如何利用动画开发一个应用的资料,忽然,发现很多应用也不怎么注重动画在app的应用,想了想,自己尝试总结一下吧。因为,本人也不是什么动画制作师,没法把动画做得很绚丽,只好,利用内置的效果,进行简单加工,如何发挥,由各位的创意来定。鉴于,很多有关的android的动画资料里面,都是堆代码的,所以,全部代码均放在了github上面,查看完整代码可以移步到github上面去。
特地说明一下,由于android 模拟器和录制工具的原因,例子展示中的gif 的抽筋播放效果不等同于实际效果,自己脑补把抽筋的部分去掉
android 动画基础
在Android 里你能够使用的动画效果:
-
平移
-
缩放
-
旋转
-
透明
以上动画的基本使用就是本文的内容了。由于,本人的能力问题,实在搞不出让人眼前一亮的动画,就凑合着看着吧。不过,那些令人赞叹的动画效果的基础就是这些。
Interpolators(插值器)
一般而言,要做动画的,需要封装点物理公式,用作为计算帧与帧间的数值计算,不过,如果,只是,为了搞些动画让app好用一些,倒不需要搞得这么复杂,android 官方api 已经封装好了一些常用的动画插值器。
默认内置7种类型的插值器,个人觉得,如果只是应用里面的一些动画的话这7个就够用了。
-
AccelerateInterpolator
-
Decelerate
-
AccelerateDecelerateInterpolator
-
AnticipateInterpolator
-
OvershootInterpolator
-
AnticipateOvershootInterpolator
-
BounceInterpolator
-
LinearInterpolator
匀速
以上动画都源自android官方api demo,用eclipse adt android 选择例子项目导航,然后,选择APIDEMOS 就能创建(什么没听说过?现在知道了吧。。。)
好了,虽然截取的gif 动画播放起来有点抽筋的感觉,接下来我们该如何在应用中使用这些知识呢?
组合动画
目前讲解动画api 的资料比较多,这里就不在重复那些基础的知识了!
现在让我们学习一下,如何利用,平移,缩放,旋转创造出让人眼前一亮的动画.
为了,更有目的的使用动画,下面假想一个使用场景。
假想:商品购物车案例
Notice :为了方便看效果,动画延时时间将会设置的比较长。特地说明一下:假想就是随便想,切勿对号入座。
任务:
为了,让商城app有更好的交互效果,决定对购物车控件和商品控件上面加一些动画效果。
购物车动画设计方案:
利用,透明,平移,对购物车的出现和离开增加动画交互效果。
相关知识点
一些动画常用的通用基础属性:
Notice: 所谓通用就是说所有动画标签都适用于这些属性
-
android:duration
设置动画播放的时间 -
android:startOffset
设置动画的开始播放时间 -
andorid:interpolator
设置动画的插值器 -
android:repeatCount
动画播放的常用次数 -
android:repeatMode
动画重播的模式,即从头到尾,从头到尾,还是从头到尾,在从尾到头。
透明的使用:
<alpha />
value 从 0 (透明) 到 1 (不透明)在android中透明主要用于对view 淡入,淡出的效果控制主要有两个属性
-
android:fromAlpha
view在动画开始的透明度。 -
android:toAlpha
view在动画结束的透明度。
平移的使用:
<translate />
支持使用 %,如 “50%“ 获取的是这个view的百分之50,除此之外还有另外一种写法:”50%p“ 意思是获取这个view的上一级view的百分之50 当然,指定特定值也是支持的“22.2”,不过为了兼容更多的android设备建议还是使用百分比的值。
-
android:fromXDelta
-
android:fromYDelta
from?Delta 意思是开始的轴线
-
android:toXDelta
-
android:toYDelta
to?Delta 意思是结束的轴线
这次的方案展示了两个插值器的使用:
用于出现的:BounceInterpolator
用于离开的: AnticipateInterpolator
什么是插值器?
所谓插值器就是用于数值的起始间的变化,就是相当于一个类似于物理引擎的东西。android官方内置了一些简单常用的数值变换,让我们,不需要去学习相关的物理知识。
例如:
开始值为1,结束值为 100.那么我们如何控制变化这个值的变化过程呢?这里就是插值器的使用。
一般匀速的话就是:
1,2,3,4,5...100。 然后我们就会看到物体以一个匀速的速度进行平移操作。
那么我们需要物体像汽车那样加速度的前进,我们可以用加速插值器,我们从1到100的过程,就会是:
1,2,4,5,8,16.。。。。100 展示在我们面前的view对象就会以一个加速度的形式进行平移。
有很多应用开发者并不熟悉动画制作的一些基础知识,可能不太明白。现在,通过对源码进行分析,来彻底搞明白这个概念。
我们分析一些Interpolator 类树:
从api文档TimeInterpolator 我们可以知道,这个插值器的实现只有一个方法:
getInterpolation(float t);
然后我们挑选前面用过的BounceInterpolator 看下,它是如何实现这个方法。如果感兴趣的,可以按照这种方法,把其他几个插值器的实现都看一遍。
最后我们会发现,插值器的作用就是返回值。
接着我们来看下Animation line:869 是怎么用这个接口的.
看完这这几个地方,相信应该对android 动画框架怎么对值进行变换的原理应该有所了解。
有了以上知识,我们对android的动画框架基本上已经完全了解,现在,我们利用学到的知识,进行更好的动画设计。
我们接着刚才的案例,着手设计商品控件的动画设计
商品动画设计:
这次,我们学习一个新的动画标签缩放(<scale>
)
效果如下:
<scale />
使view 大点或者小点
-
android:fromXScale
-
android:fromYScale
from?Scale 意思是开始轴线的缩放比例(默认 1.0)
-
android:toXScale
-
android:toYScale
to?Scale 意思是结束轴线的缩放比例(默认 1.0)
-
android:pivotX
-
android:pivotX
旋转用的轴点坐标
最后我们把购物车的动画,和商品的动画在组合起来。效果如下:
添加商品的时候,如果购物车还没出现,先出现购物车显示的动画,在进行商品的动画播放。
这次我们学习一下如何监听动画的动作,对于AnimationListener()
主要有三个
-
onAnimationStart(Animation animation)
-
onAnimationRepeat(Animation animation)
-
onAnimationEnd(Animation animation)
相关推荐
在Android开发中,属性动画(Property Animation)是一个强大的工具,用于创建动态效果和交互,它使得对象可以在多个帧之间平滑地...通过不断实践和探索,你可以创造出更多创新的动画效果,提升用户对应用的满意度。
通过深入学习并实践homeDemo中的源码,开发者可以掌握Android应用程序启动动画、Activity切换动画、过渡动画的实现方法,同时也能了解到自定义动画、性能优化和兼容性处理等相关知识,从而提升Android应用的用户体验...
通过这些示例,我们可以学习到如何有效地在Android应用中实现各种动画效果,从而提升应用的交互性和视觉吸引力。 首先,Android提供了两种主要类型的动画:属性动画(Property Animation)和视图动画(View ...
通过上述方法,我们可以有效地优化Android帧动画,减少内存使用,提升应用的性能和用户体验。在实践中,应根据具体项目需求和设备条件灵活运用这些技巧,达到最佳的优化效果。在提供的`FrameAnimation-master`项目中...
在Android开发中,动画是提升用户体验的关键因素,它能让应用变得更加生动有趣。...通过不断的实践和学习,开发者可以掌握更多高级技巧,如动画组合、插值器、路径动画等,进一步提升应用的动画效果。
总的来说,Android的Path Animation是一种强大的视觉表现手法,它结合了数学与艺术,让开发者能够在移动应用中实现流畅、自然的动画效果。通过学习和掌握这一技术,可以极大地提升应用程序的用户体验和吸引力。
这个"Android应用源码安卓动画合集大全"提供了丰富的示例,帮助开发者深入了解和实践Android动画技术。以下将详细阐述其中可能涵盖的知识点: 1. **Android动画类型**: - **视图动画(View Animation)**:这是...
总的来说,这个实例代码是学习和实践Android翻页动画的宝贵资源。通过研究贝塞尔曲线的应用,理解动画的执行流程,并结合实际的阅读场景,开发者可以提升自己在Android动画设计方面的能力,为用户提供更佳的视觉和...
了解并掌握Android的属性动画和帧动画,能极大地提升应用的用户体验。通过实践《疯狂安卓讲义》中的小球下落例子,开发者可以更好地理解这两种动画的工作原理和应用场景,从而在自己的项目中灵活运用。在...
在Android开发中,动画效果是提升用户体验的关键因素之一。这个压缩包文件提供的内容是一个基于Android旋转动画实现的...通过学习和实践这类示例,开发者可以进一步掌握Android动画系统,为用户带来更丰富的视觉体验。
在Android开发中,动画是提升用户体验的关键因素之一。"Android动画之仿美团加载数据等待时小人...通过理解并实践这个项目,开发者可以进一步掌握Android动画系统,并在自己的应用中创造出更丰富、更吸引人的交互体验。
在Android开发领域,动画是提升用户体验、增加应用趣味性的...通过深入研究这个压缩包中的源码,开发者不仅能掌握Android动画的基本原理和实现方式,还能了解最佳实践,提升自己在Android应用开发中的动画设计能力。
这篇文章将深入探讨这个主题,包括Android动画基础、SVG三角剖分的概念以及如何在Android应用中实现这种动画效果。 首先,我们来理解Android的动画系统。Android提供了多种动画机制,包括属性动画(Property ...
在Android开发中,为了使应用更具吸引力和交互性,炫酷的动画和视觉效果是必不可少的。本示例聚焦于创建一个"android 炫酷动画柱状图例子",...通过深入理解和实践,你可以创建出更加个性化的、互动性强的Android应用。
- 为视图应用动画,可以调用`startAnimation()`方法。动画结束后,视图的状态会保持在动画的最终状态,除非你设置了`Animation.setFillAfter(false)`。 5. **源码解析**: 源码可能包含以下几个关键部分: - ...
在Android应用开发中,界面切换动画是提升用户体验的重要一环。"android应用源码界面切换动画大全.zip"这个资源包提供了丰富的示例,帮助开发者学习和掌握如何在Android应用程序中实现各种炫酷的界面过渡效果。以下...
在Android开发中,动画是提升用户体验的关键因素,它能让应用变得更加...深入学习和实践这些动画技术,对于提升Android应用的质量和吸引力至关重要。在实践中不断探索,你会发现Android动画的世界充满了无尽的可能性。
在Android应用开发中,Fragment是UI组件的一种,用于在大屏幕设备上实现多屏或复合视图。Fragment可以在Activity之间动态地添加、移除或替换,使得应用在不同屏幕尺寸和配置下都能提供良好的用户体验。"Android ...
在Android开发中,序列帧动画(Frame Animation)是一种常见的动态效果实现方式,它通过连续播放一系列静态图片来创建动画效果,类似于电影胶片的工作原理。本Demo主要关注如何在Android中实现序列帧动画,并添加...
本教程将深入探讨Android属性动画的概念、工作原理以及如何在实践中应用。 ### 一、属性动画概述 属性动画与传统的补间动画(Tween Animation)不同,补间动画只能改变View的位置和大小,而属性动画则可以改变任何...