美文网首页
安卓动画

安卓动画

作者: yankelin | 来源:发表于2016-08-04 21:31 被阅读0次

补间动画 帧动画 属性动画

TweeAnimation 补间动画

只可以改变两个关键帧之间的透明度,旋转,缩放,位移四个变化

AlphaAnimation
RotateAnimation
ScaleAnimation
TranslateAnimation

  1. 设置动画的资源文件

补间动画的资源文件

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="true"
    android:interpolator="@android:anim/accelerate_decelerate_interpolator"
    >
    <scale android:fromXScale="1.0"
           android:toXScale="2.0"
           android:fromYScale="1.0"
           android:toYScale="2.0"
           android:fillAfter="true"
           android:duration="3000"
           />
</set>
animation=AnimationUtils.loadAnimation(this, R.anim.anim_1);//加载动画资源
btn.setOnClickListener(this);//启动动画
  1. 直接在代码中设置动画
 RotateAnimation animation = new RotateAnimation(0, 2700);//创建动画
 animation.setDuration(10000);//设置时长
 animation.setRepeatCount(5);//设置重复次数
 animation.setInterpolator(new AnticipateInterpolator());//设置插值器
 animation.setAnimationListener(this);//设置监听
 mButton1.startAnimation(animation);//启动动画

TimeInterpolator和TypeEvaluator

TimeInterpolator中文翻译为时间插值器,它的作用是根据时间流逝的百分比来计算出当前属性值改变的百分比

系统预置的有LinearInterpolator(线性插值器:匀速动画)、AccelerateDecelerateInterpolator(加速减速插值器:动画两头慢中间快)和DecelerateInterpolator(减速插值器:动画越来越慢)等

TypeEvaluator的中文翻译为类型估值算法,它的作用是根据当前属性改变的百分比来计算改变后的属性值

系统预置的有IntEvaluator(针对整型属性)、FloatEvaluator(针对浮点型属性)和ArgbEvaluator(针对Color属性)

为补间动画添加插值器Interpolator

  • 几种插值器
  1. 越来越快 AccelerateInterpolator()
  2. 越来越慢 DecelerateInterpolator()
  3. 先快后慢 AccelerateDecelerateInterpolator()
  4. 先后退一小步然后向前加速 AnticipateInterpolator()
  5. 快速到达终点超出一小步然后回到终点 OvershootInterpolator()
  6. 到达终点超出一小步然后回到终点 AnticipateOvershootInterpolator()
  7. 弹球效果,弹几下回到终点 BounceInterpolator()
  8. 均匀速度 LinearInterpolator()

帧动画

Frame Animation是顺序播放事先做好的图像,跟电影类似。不同于animation package,Android SDK提供了另外一个类AnimationDrawable来定义使用Frame Animation。
利用xml文件实现:res/drawable-hdpi/frame.xml:

<?xml version="1.0" encoding="utf-8"?>
<animation-list
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:oneshot="true">
       <item android:drawable="@drawable/p1" android:duration="1000"/>
       <item android:drawable="@drawable/p2" android:duration="1000"/>
       <item android:drawable="@drawable/p3" android:duration="1000"/>
</animation-list>
  • 使用帧动画
AnimationDrawable anim = (AnimationDrawable)getResources().  
getDrawable(R.drawable.frame);  
textWidget = (TextView)findViewById(R.id.text_widget);  
textWidget.setText("背景渐变动画效果");  
textWidget.setBackgroundDrawable(anim);  
anim.start();

属性动画

ValueAnimation

ObjectAnimation

AnimatorSet

动画的常见使用场景

在ViewGroup中控制子元素的出场效果

  1. 在anim文件夹中给ViewGroup设置动画
 <?xml version="1.0" encoding="utf-8"?>
 <layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
                 android:animation="@anim/animation_item"
                 android:animationOrder="normal"
                 android:delay="0.2">
    <!--animation 给子控件设置动画资源-->
    <!--animationOrder 是定义子控件的出场顺序-->
    <!--delay 是定义两个子控件的动画延迟时间,0.2是延迟的倍数-->
</layoutAnimation>
  1. 在anim文件夹中给子控件设置动画效果
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
     android:duration="500"
     android:interpolator="@android:interpolator/anticipate"
     android:shareInterpolator="true"
    >
    <alpha
        android:fromAlpha="0"
        android:toAlpha="1"/>
    <translate
        android:fromXDelta="500"
        android:toXDelta="0"/>
</set>
  • 这种方式也可在代码中通过LayoutAnimationController设置

Activity,Fragment的切换效果

  1. 设置activity的场景转换动画
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
     android:duration="5000"
     android:interpolator="@android:interpolator/anticipate"
     android:shareInterpolator="true">
    <rotate
        android:fromDegrees="90"
        android:toDegrees="0"/>
    <translate
        android:fromXDelta="500"
        android:toXDelta="0"
        />
</set>
  1. 启动activity的时候设置activity的转场动画,调用方法 overridePendingTransition,该方法必须在startActivity方法和finish方法之后调用才有效果
Intent intent = new Intent(this, SeconActivity.class);
                startActivity(intent);
                overridePendingTransition(R.anim.activity_enter, R.anim.activity_out);
                //分别设置进场和出场的动画效果

相关文章

  • 安卓动画

    android.view.animation Tween(补间动画/渐变动画)特点:只是改变了View的显示效果而...

  • 安卓动画

    补间动画 帧动画 属性动画 TweeAnimation 补间动画 只可以改变两个关键帧之间的透明度,旋转,缩放,位...

  • 安卓动画

    Android 中的动画可以分为以下几类: 逐帧动画 补间动画 属性动画 1、逐帧动画 逐帧动画的原理就是让一系列...

  • 【安卓学习笔记】安卓动画的实现(1)——补间动画(Tween)

    安卓动画分类 安卓动画分为图中所示4大类。所谓帧动画,即准备很多图片,让图片按一定时间连续播放,从而达到模拟动画效...

  • react-navigation相关bug的解决

    让安卓实现push动画 之前我群里的讨论怎么让安卓实现类似iOS的push动画,后来翻看官方issues的时候,真...

  • Android基础之动画资源浅析

    动画 在开发中,为了让我们的App更加生动,我们往往会加入一些动画效果,下面我们来说说安卓中的动画。 安卓中提供了...

  • 安卓动画--属性动画

    属性动画类似于跟看电影一样,都是多张图片,一贞一贞展现出来。可以配置在xml里面,通过每贞图片停留时间长短,结合在...

  • 安卓中基本的动画总结

    安卓有三种基本的动画: 1.帧动画2.补间动画3.属性动画(安卓3.0以后加入) 帧动画 帧动画是在drawabl...

  • 安卓动画Animation

    常见的动画分为两类: 一、属性动画 二、帧动画 今天主要记一下四中属性动画 旋转:RotateAnimation ...

  • 【总结】安卓动画

    本篇为对android动画机制的粗略总结,目的是方便查询而非讲解,所以代码部分的注释比较多,但是很多该配图的地方没...

网友评论

      本文标题:安卓动画

      本文链接:https://www.haomeiwen.com/subject/fpqhsttx.html