1. 动画有什么用
2. animation如何实例化(new,或xml配置animationutil.load())
3. animation的分类(按动画素材分,帧动画,间补动画;按启动对象分:窗口动画,视图动画)
1) 帧动画 frame anim:AnimationDrawable 配置xml文件 animation-list 1.1)animation自定义 重写方法 applyTransformation() 改变
Transformation
2) 间补动画 tween anim: AlphaAnimation , RotateAnimation, ScaleAnimation, TranslateAnimation 配置xml文件 alpha, rotate, scale, translate
3) 属性动画property anim:
3.1) valueAnimator addupdateListener() { 属性改变 }
3.2) objectAnimator
3.2.1) 属性 xxx
3.2.2) setX() , getX()
3.2.3) _offx 实例化
3.3) offint , offfloat, offobject, offproperty , propertyvalueHolder, setCurrentPlayTime(long playTime)
4) interpolator 帧动画 间补动画 android.view.animation.Interpolator在view包下, 属性动画 android.animation.TimeInterpolator 在animation包下
4.0 之后 Interpolator 继承自TimeInterpolator
4.animation的原理
5.如何播放gif 文件
6.如何结束动画。
view.clearAnimation()
7.如何做多个view的整体动画。
用container view startAnimation();
8.
Interpolator 的作用
动画的变化频率 ( ~0 ---- ~1)相当于加速度 a
根据系统 SystemClock.uptimeMillis() (每次调用都获取)
计算出在(0 ~ duration ) 哪个时间点
再计算出normalizedTime (0 ~ 1)百分比
input 为 normalizedTime(0~ 1)
input 为 delta time / duration (0 ~ 1)
getInterpolation(float input)
9.
Transformation 作用
animation中通过applyTransformation() 来改变transformation 来作动画
10. 关于帧数
游戏一般到60 帧才流畅。 animator 睡眠时间是10ms 即100帧每秒。这个帧数可以调节
静态方法ValueAnimator.setFrameDelay(long frameDelay)
11.TypeEvaluator 作用
根据Interpolator 计算出的fraction 和初始 、结束值来计算view 的属性值。
默认是 IntEvaluator 和 FloatEvaluator
12 window 动画
setWindowAnimations() 只能有显示动画
activity overridePendingTransition(enterAnim, exitAnim) 可以设置出入动画
去掉activity间切换动画
findViewById(R.id.button2).setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
Intent intent = new Intent(OneActivity.this, TwoActivity.class);
startActivity(intent );
overridePendingTransition(0, 0);//去掉Activity切换间的动画
}
});
startActivity(new Intent(A.this, B.class));
overridePendingTransition(inAnim, outAnim);
finish();
activity.overridePendingTransition(inAnim, outAnim);
全局activity动画
<style name="Theme.Test" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:windowAnimationStyle">@style/Animation.Activity.Test</item>
</style>
<style name="Animation.Activity.Test" parent="@android:style/Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/activity_open_enter</item>
<item name="android:activityOpenExitAnimation">@anim/activity_open_exit</item>
<item name="android:activityCloseEnterAnimation">@anim/activity_close_enter</item>
<item name="android:activityCloseExitAnimation">@anim/activity_close_exit</item>
<item name="android:taskOpenEnterAnimation">@anim/activity_open_enter</item>
<item name="android:taskOpenExitAnimation">@anim/activity_open_exit</item>
<item name="android:taskCloseEnterAnimation">@anim/activity_close_enter</item>
<item name="android:taskCloseExitAnimation">@anim/activity_close_exit</item>
<item name="android:taskToFrontEnterAnimation">@anim/activity_open_enter</item>
<item name="android:taskToFrontExitAnimation">@anim/activity_open_exit</item>
<item name="android:taskToBackEnterAnimation">@anim/activity_close_enter</item>
<item name="android:taskToBackExitAnimation">@anim/activity_close_exit</item>
</style>
android tween动画 配置文件知识点:
alpha
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<!-- fromAlpha和toAlpha是起始透明度和结束时透明度 -->
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:startOffset="500"
android:duration="500"/>
</set>
rotate
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<!--
fromDegrees:开始的角度
toDegrees:结束的角度,+表示是正的
当角度为负数——表示逆时针旋转
当角度为正数——表示顺时针旋转
pivotX:用于设置旋转时的x轴坐标
例
1)当值为"50",表示使用绝对位置定位
2)当值为"50%",表示使用相对于控件本身定位
3)当值为"50%p",表示使用相对于控件的父控件定位
pivotY:用于设置旋转时的y轴坐标
-->
<rotate
android:fromDegrees="0"
android:toDegrees="+360"
android:pivotX="50%"
android:pivotY="50%"
android:duration="1000"/>
</set>
scale
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<!--
起始x轴坐标
止x轴坐标
始y轴坐标
止y轴坐标
轴的坐标
轴的坐标
-->
<scale
android:fromXScale="1.0"
android:toXScale="0.0"
android:fromYScale="1.0"
android:toYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="1000"/>
</set>
translate
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<!--
始x轴坐标
止x轴坐标
始y轴坐标
止y轴坐标
-->
<translate
android:fromXDelta="0%"
android:toXDelta="100%"
android:fromYDelta="0%"
android:toYDelta="100%"
android:duration="2000"/>
</set>
3种动画都可以通过配置文件来实现。
帧动画:
setBackground() 即可
间补动画:
AnimationUtils.loadAnimation(context,R.anim.x);
属性动画:
AnimatorInflater.loadAnimator(context, R.anim.x);