0
点赞
收藏
分享

微信扫一扫

Android 开发艺术探索笔记(15)


帧动画

帧动画是播放一组预定好的图片,类似于电影播放。
系统提供了另一个类AnimationDrawable来使用帧动画。用法是现在XML用< animation-list>来放入帧Drawable,然后将上述的Drawable作为View的背景来播放动画。

Button mButton = findViewById(R.id.button);
mButton.setBackgroundDrawable(R.drawable.frame_animation);
AnimationDrawable drawable = (AnimationDrawable)mButton.getBackground();
drawable.start();

帧动画比较简单,但容易引起OOM,所以在使用帧动画时,尽量避免使用过多尺寸大的图片。

View动画的特殊使用场景
View动画还可以在ViewGroup中控制子元素的出场效果,在Activitiy中可以实现不同Activity之间切换效果。具体用到的类是LayoutAnimation和overridePendingTransition这个方法。具体代码就不展示了。

属性动画

属性动画可以作用于任何对象,也有多样的动画效果。默认时间间隔是300ms,默认帧率是10ms/帧。兼容API11以下的话要用的NienOldAdnroids的动画库
比较常用的几个动画类ValueAnimator、ObjectAnimator、AnimatorSet
其中ObjectAnimator继承ValueAnimator,AnimatorSet是一个动画合集。

下面用ObjectAnimator对一个对象(myobject)做一个y轴上的平移的动画效果:

Android 开发艺术探索笔记(15)_帧动画

下面是用ValueAnimator来实现对一个对象的颜色渐变的动画效果

Android 开发艺术探索笔记(15)_xml_02

下面是用AnimatorSet来5s内对View进行平移、旋转、缩放、改变透明度

Android 开发艺术探索笔记(15)_帧动画_03


也可以通过XML来定义,要在res/animator/下,语法如下:

Android 开发艺术探索笔记(15)_xml_04


参数比较好理解,里面可以定义objectAnimator和ValueAnimator。

ordering属性是指子动画同时播放或者按顺序播放。默认为together,下面是各个属性的解释:

Android 开发艺术探索笔记(15)_xml_05


然后再代码中去运用

AnimatorSet set = (AnimatorSet)AnimatorInflater.loadAnimator(mContext,R.anim.propety_animator);
set.setTarget(mButton);
set.start();

建议在代码中使用动画,这样更加简单,如果用xml很多时候一个属性的起始值是无法确定的,比如我们无法知道屏幕的宽度,因此无法使用。


举报

相关推荐

0 条评论