#.动画的本质
无论手机还是电视,都以一定频率在不停刷新屏幕画面,当前一般为60Hz。
手机屏幕一般1s刷新了60次屏幕画面,如果这些画面连在一起呈现出了一个“动画”的效果,用户就认为看到了动画。
无论这个效果是用什么方式来实现的,其实用户只是需要在屏幕中看到这个效果。它可以通过很多种方式来实现,例如:覆写View的onDraw()、通过SurfaceView、通过估值器不停回调更新、通过Handler不停发送延迟消息更新。
而Android本身提供了三种机制来供开发者更便捷地实现动画,这也就是我们开发者口中经常说到的Android三种动画:补间动画、属性动画、帧动画
#.Android三类动画简介:
1.补间动画:
通过渐进操作View的影像,实现动画。注意它仅仅实现一个动画效果,未真正改变View任何属性。
例如View用补间动画移动后,位置并未变化,若设置了点击事件,点击原来位置有反应,点击最后动画停止位置无反应。
能进行4种效果的变化:平移、放缩、旋转、透明度。
2.属性动画:
通过渐进改变View对象的属性值,实现动画。(这里的属性可以是该对象java类中任意已实现set/get方法的属性)
会真实改变属性值,但要注意位置变化时View的getLeft()/getRight()/getTop()/getBottom()等四个边界的原始偏移坐标不会变化,改变的是View左上角当前的坐标值getX()/getY()。
3.帧动画:
设置了一组图片,通过快速切换这些图片的显示,实现动画效果
#.三种动画示例及属性说明
1.补间动画
在src/anim下定义anim_set.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- 可以定义一个个单独的动画,也可以将这些动画组合起来定义在一个xml中 -->
<!-- 组合的方式更常见一些 -->
<set xmlns:android="http://schemas.android.com/apk/res/android">
<!--透明度变化-->
<alpha
android:duration="1000"
android:fromAlpha="0"
android:toAlpha="1"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
/>
<!--平移-->
<translate
android:duration