animation的知识点分类

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);





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值