精华内容
下载资源
问答
  • Web动画形式

    千次阅读 2018-06-10 15:27:24
    背景 对于Web开发者来说,不管什么细分方向,比如数据可视化、网站系统、电商网站等等,都会涉及到一个难题“动画”。 因为动画关系到Web开发的两个...动画形式 大概梳理了下,动画有不止以下几种形式: 一、C...

    背景

    对于Web开发者来说,不管什么细分方向,比如数据可视化、网站系统、电商网站等等,都会涉及到一个难题“动画”。
    因为动画关系到Web开发的两个比较重要的点,一是视觉效果,二是用户体验,通过酷炫动画效果可以给视觉加不少分,同样,恰到好处的微动效也会给用户体验带来不错的惊喜,基于此,我们的Web动画该如何实现,他有哪些实现方式呢?

    动画形式

    大概梳理了下,动画有不止以下几种形式:
    一、CSS3动画
    二、JS动画
    三、Canvas动画
    四、SVG动画
    五、以Three.js为首的3D动画
    针对以上动画形式,我们来简单介绍下吧。

    一、CSS3动画

    CSS3动画是我目前工作中用到最多的动画形式,因为它书写简单,性能好,不需要懂JavaScript也能写动画,甚至可以实现一些三维立体效果。
    CSS3动画又包含几种,比如,transform,transition,animation。

    Transform(变形)

    transform变包含了rotate(旋转)、scale(缩放)、translate(移动)、skew(扭曲)以及matrix(矩阵变形)。
    我们一般会结合transition来使用,使元素变形的过程变的平滑。

    Transition(过渡)

    CSS3中的transition是让元素的属性值在一定时间区间内平滑过渡,还可以定义变换速率。不是所有的属性都支持过渡的,或者说有很多属性都支持过渡,所以最好还是了解下,没准下次我们就能创造不一样的动画效果了呢!

    属性名称 类型
    background-colorcolor
    background-imageonly gradients
    background-positionpercentage, length
    border-bottom-colorcolor
    border-bottom-widthlength
    border-colorcolor
    border-left-colorcolor
    border-left-widthlength
    border-right-colorcolor
    border-right-widthlength
    border-spacinglength
    border-top-colorcolor
    border-top-widthlength
    border-widthlength
    bottomlength, percentage
    colorcolor
    croprectangle
    font-sizelength, percentage
    font-weightnumber
    grid-*various
    heightlength, percentage
    leftlength, percentage
    letter-spacinglength
    line-heightnumber, length, percentage
    margin-bottomlength
    margin-leftlength
    margin-rightlength
    margin-toplength
    max-heightlength, percentage
    max-widthlength, percentage
    min-heightlength, percentage
    min-widthlength, percentage
    opacitynumber
    outline-colorcolor
    outline-offsetinteger
    outline-widthlength
    padding-bottomlength
    padding-leftlength
    padding-rightlength
    padding-toplength
    rightlength, percentage
    text-indentlength, percentage
    text-shadowshadow
    toplength, percentage
    vertical-alignkeywords, length, percentage
    visibilityvisibility
    widthlength, percentage
    word-spacinglength, percentage
    z-indexinteger
    zoomnumber

    Animation(动画)

    “关键帧”是指在某个时间点上,定义元素的状态,如果把动画时间区间里面,每个时间点都定义元素状态,这种叫逐针动画,这种形式一般用在动画软件制作上才会用到,因为制作成本高,所以我们一般会采用另一种更方便、更简单的实现方式,就是补间动画。补间动画是指我们定义好两个时间节点上元素的状态,中间元素变化的过程由计算机帮我们计算好,比如下面的例子:

    @keyframes swing {
      20% {
        -webkit-transform: rotate3d(0, 0, 1, 15deg);
        transform: rotate3d(0, 0, 1, 15deg);
      }
      40% {
        -webkit-transform: rotate3d(0, 0, 1, -10deg);
        transform: rotate3d(0, 0, 1, -10deg);
      }
      60% {
        -webkit-transform: rotate3d(0, 0, 1, 5deg);
        transform: rotate3d(0, 0, 1, 5deg);
      }
      80% {
        -webkit-transform: rotate3d(0, 0, 1, -5deg);
        transform: rotate3d(0, 0, 1, -5deg);
      }
      to {
        -webkit-transform: rotate3d(0, 0, 1, 0deg);
        transform: rotate3d(0, 0, 1, 0deg);
      }
    }
    

    二、JS动画

    JS动画一般是通过定时器和计时器来实现元素属性的不断变化,这里一般常用的有jQuery的animate()方法。
    JS动画这里不做太多介绍,因为我平时用的也不多。

    三、Canvas动画

    动画的本质和以前放电影是一个原理,就是通过一系列差别不大的图片,快速的切换显示,由于人的眼睛有视觉暂留现象,造成了我们看到快速切换的图片动起来了。
    Canvas动画也是不断的快速的在屏幕上绘制图像和清除屏幕,形成了动画。如下:

    <canvas id="canvas" width="500" height="500"></canvas>
    <script>
        var canvas = document.getElementById("canvas");
        var context = canvas.getContext("2d");
        var canvasWidth = context.canvas.width;//画布的宽
        var canvasHeight = context.canvas.height;//画布的高
        var x = 0;
        function animation(){
            x++;//用于更新动画元素的X坐标位置
            context.clearRect(0, 0, canvasWidth, canvasHeight);//清除画布
            context.fillRect(x,250,10,10);//绘制一个横向运动的矩形
            setTimeout(animation,33);        
        }
        animation();
    </script>
    

    四、SVG动画

    SVG入门可以学习《SVG精髓》这本书,关于SVG动画方面下面简单介绍一下。
    SVG内置了一些动画元素,比如:
    <animate>属性能随时间改变属性值
    <animateMotion>属性使元素沿着动作路径移动
    <animateTransform>属性使SVG随时间操作Transform,这与CSS3中的Transform属性类似
    <animateColor>属性随时间修改对应属性的颜色值
    但是因为以上动画元素兼容性不是很好,所以建议大家尽量使用元素属性来进行SVG的动画制作,比如stroke-dasharry,stroke-dashoffset,可以实现描边动画,可以看下我之前做的案例。
    《SVG初体验》

    五、以Three.js为首的3D动画

    Three.js是一个基于JavaScript,使用方便,运行在浏览器中的轻量级的3D框架,可以用它创建各种三维场景,包括摄影机,光影及材质等各种对象,并且提供了Canvas、SVG、CSS 3D及WebGL4中渲染器。
    目前兼容到IE10,需要降级处理。

    里面的动画原理和Canvas动画有点相同,也是通过Three.js的API接口,来不断快速的改变元素属性和状态,形成动画效果。
    它不仅仅可以创建动画效果,还可以创建元素对象,我们CSS中,元素对象一般是用CSS样式来控制的,而Three.js 可以直接通过JS创建元素对象。

    总结

    以上我们对Web动画形式进行了简单的介绍,我们平时最常用的还是CSS3动画,我们也会根据项目需求,调整动画形式,这里我们没有将如何制作一个动画效果,而是大概念的梳理了下目前实现动画的形式,让大家在平时工作的过程中,不要专注于实现一个动画而忘记了实现动画有很多形式。

    对于复杂动画我们有时会用帧动画来实现,那帧动画有哪些实现方式呢,我们后面也将继续介绍。

    展开全文
  • Android动画分类(一)

    千次阅读 2017-03-04 15:47:22
    1、官方分类,三种:属性动画(Android 3.0之后才添加)、视图动画(分为逐帧动画和补间动画)、Drawable 动画 2、属性动画 /

    一、官方分类,三种:视图动画(分为逐帧动画和补间动画)、属性动画(Android 3.0之后才添加)、Drawable 动画(逐帧动画的xml资源)


    二、属性动画

    一、逐帧动画(Frame)

    逐帧是最容易理解的动画,它要求开发者把动画过程的每张静态图片都收集起来,然后由程序来控制依次显示这些静态图片,就是播放电影一样。 

    逐帧动画与Drawable 动画结合使用:虽然我们可以在代码中定义动画资源,但通常我们使用xml的形式去定义。

    如:

    a、在资源中定义动画资源

    在drawable文件夹下新建一个文件frame.xml,而不是anim文件夹

    <?xml version="1.0" encoding="utf-8"?>
    <animation-list xmlns:android="http://schemas.android.com/apk/res/android"
                    android:oneshot="false">//oneshot:是否只播放一次
    
        <item
            android:drawable="@mipmap/lottery_1"
            android:duration="200"/>//duration:这一帧持续的时间
        <item
            android:drawable="@mipmap/lottery_2"
            android:duration="200"/>
        <item
            android:drawable="@mipmap/lottery_3"
            android:duration="200"/>
    
    </animation-list>
    将ImageView作为动画载体

     <ImageView
       android:id="@+id/iv"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="center"
       android:layout_margin="10dp"
       android:src="@drawable/frame" />

    java代码中控制动画

    imageView = (ImageView)findViewById(R.id.iv);
    AnimationDrawable animationDrawable = (AnimationDrawable) imageView.getDrawable();
    animationDrawable.start();
    animationDrawable.stop();

    b、在代码中定义动画资源

    AnimationDrawable anim = new AnimationDrawable();
        for (int i = 1; i <= 6; i++) {
        int id = getResources().getIdentifier("lottery_" + i, "mipmap", getPackageName());
        Drawable drawable = getResources().getDrawable(id);
        anim.addFrame(drawable, 200);//添加帧
        }
        anim.setOneShot(false);//设置为循环播放
        imageView.setImageDrawable(anim);
        anim.start();

    二、补间动画(Tween)

    补间动画就是我们只需要指定动画开始、动画结束“关键帧”和动画的持续时间就可以,而动画变化的“中间帧”由系统计算并补齐,并且动画执行后不能改变View响应事件的位置,View响应事件的位置还是在动画执行前的位置,不具备交互性。在xml中定义时是放在res/anim/文件夹里。

    Animation代表抽象的动画类,它的实现类有如下几个:AlphaAnimation、ScaleAnimation、RotateAnimation、TranslateAnimation、AnimationSet。

    动画类型 xml配置方式 Java实现方式
    透明度 <alpha> AlphaAnimation
    大小缩放 <scale> ScaleAnimation
    旋转 <rotate> RotateAnimation
    位移变化 <transtate> TranslateAnimation
    组合动画 <set> AnimationSet

    1、xml使用

    <alpha>

    <?xml version="1.0" encoding="utf-8"?>
    <alpha xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="500"
        android:fillAfter="false"
        android:fromAlpha="1.0"
        android:toAlpha="0.0" />
    fillAfter:设置动画结束后是否保挂当前透明度

    <scale>

    <?xml version="1.0" encoding="utf-8"?>
    <scale xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="500"
        android:fromXScale="0.0"
        android:fromYScale="0.0"
        android:toXScale="1.5"
        android:toYScale="1.5"
        android:interpolator="@android:anim/decelerate_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:repeatCount="1"
        android:repeatMode="reverse"
        android:startOffset="0"
        />
    fromXScale:起始时X轴的缩放

    toYScale:结束时Y轴的缩放

    fromXDelta:起始时X座标

    toYDelta:动画结束时Y的座标 

    pivotX, pivotY 动画起始位置,相对于屏幕的百分比,两个都为50%表示动画从自身中间开始

    startOffset, 动画多次执行的间隔时间,如果只执行一次,执行前会暂停这段时间,单位毫秒 

    repeatCount,动画重复的计数,动画将会执行该值+1次

    repeatMode,动画重复的模式,reverse为反向,当第偶次执行时,动画方向会相反。restart为重新执行,方向不变

    <rotate>

    <?xml version="1.0" encoding="utf-8"?>
    <rotate xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="500"
        android:fromDegrees="0"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toDegrees="-360" />
    fromDegrees 动画开始时的角度
    toDegrees 动画结束时物件的旋转角度,正代表顺时针
    pivotX 动画相对于物件的X坐标的开始位置
    pivotY 动画相对于物件的Y坐标的开始位置

    <translate>

    <?xml version="1.0" encoding="utf-8"?>
    <translate xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="500"
        android:fromXDelta="100"
        android:fromYDelta="0"
        android:interpolator="@android:anim/cycle_interpolator"
        android:toXDelta="0"
        android:toYDelta="0" />

    <set>

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android"
        android:interpolator="@[package:]anim/interpolator_resource"
        android:shareInterpolator=["true" | "false"] >
        <alpha
            android:fromAlpha="float"
            android:toAlpha="float" />
        <scale
            android:fromXScale="float"
            android:toXScale="float"
            android:fromYScale="float"
            android:toYScale="float"
            android:pivotX="float"
            android:pivotY="float" />
        <translate
            android:fromXDelta="float"
            android:toXDelta="float"
            android:fromYDelta="float"
            android:toYDelta="float" />
        <rotate
            android:fromDegrees="float"
            android:toDegrees="float"
            android:pivotX="float"
            android:pivotY="float" />
        <set>
            ...
        </set>
    </set>
    interpolator:设置插值器

    shareInterpolator:是否要将插值器应用到所有子元素

    代码中将动画资源设置到View中并启动动画:

     Animation alphaAnimation = AnimationUtils.loadAnimation(this, R.anim.anim_alpha);
     imageView.startAnimation(alphaAnimation);

    2、代码使用

    下面以设置透明度为例子

    Animation alphaAnimation = new AlphaAnimation(1.0f, 0.0f);
    alphaAnimation.setDuration(500);//设置动画持续时间为500毫秒
    alphaAnimation.setFillAfter(false);//设置动画结束后保持当前的位置(即不返回到动画开始前的位置)
    imageView.startAnimation(alphaAnimation);

    3、插值器就是控制动画的变化速率,使其能够以匀速变化,先加速后减速、加速变化等各种变化。

    系统自带的几种插值器:

    java代码 xml 解释
    AccelerateInterpolator @android:anim/accelerate_interpolator 开始慢后面快
    DecelerateInterpolator @android:anim/decelerate_interpolator 前面快后面慢
    AccelerateDecelerateInterolator @android:anim/accelerate_decelerate_interpolator 先加速后减速
    AnticipateInterpolator @android:anim/anticipate_interpolator 反向,先向相反方向改变一段再加速播放
    AnticipateOvershootInterpolator @android:anim/anticipate_overshoot_interpolator  反向加超越,先向相反方向改变,再加速播放,会超出目的值然后缓慢移动至目的值
    CycleIinterpolator @android:anim/cycle_interpolator 循环,动画循环一定次数,值的改变为一正弦函数
    LinearInterpolator @android:amin/linear_interpolator 线性,线性均匀改变
    OvershootInterpolator @android:overshoot_interpolator 超越,最后超出目的值然后缓慢改变到目的值

    参考文章:

    http://www.cnblogs.com/whoislcj/p/5730520.html

    展开全文
  • Android所有动画分类总结

    千次阅读 2019-01-07 16:55:10
    Android常用动画调研 视图动画(View Animation) 视图动画:也叫Tween(补间)动画可以在一个视图容器内执行一系列简单变换(位置、大小、旋转、透明度)。譬如,如果你有一个TextView对象,您可以移动、旋转、...

    Android常用动画调研

    视图动画(View Animation)

    视图动画:也叫Tween(补间)动画可以在一个视图容器内执行一系列简单变换(位置、大小、旋转、透明度)。譬如,如果你有一个TextView对象,您可以移动、旋转、缩放、透明度设置其文本,当然,如果它有一个背景图像,背景图像会随着文本变化。补间动画通过XML或Android代码定义,建议使用XML文件定义,因为它更具可读性、可重用性。

    作用对象:作用于视图对象View,如TextView,不可作用于属性,如点击响应位置等。

    核心类:透明度动画(AlphaAnimation)、缩放动画(ScaleAnimation)、平移动画(TranslateAnimation)、旋转动画(RotateAnimation)。

    常用使用场景:1、比如应用于ViewGroup的子元素,常用的ViewGroup,比如ListView的每个子元素出现时多有一个特定的动画;2、应用于Activity的切换,Activity切换过程中,系统有默认的动画,但是很普通,如果我们想自己定义,可以使用 overridePendingTransition(int enterAnim, int exitAnim)来指定动画。3、应用于Fragment的切换Fragmnet同样也可以添加动画切换,这个应该相对比较少用到。它是通过FragmentTransaction的setCustomAnimations(int enter, int exit)方法来指定动画的。等

    主要效果:

    详细使用步骤:https://blog.csdn.net/pzm1993/article/details/77167049

     

     

     

    帧动画(Frame 动画、Drawable 动画)

    帧动画:将动画拆分为 帧 的形式,且定义每一帧 = 每一张图片,逐帧动画的本质是按序播放一组预先定义好的图片,使用简单、方便但是易引起 OOM,因为会使用大量 & 尺寸较大的图片资源,使用时一定要避免使用尺寸较大的图片。

    作用对象:视图控件(View),如Android的TextView、Button等等,不可作用于View组件的属性,如:颜色、背景、长度等等。

    核心类:AnimationDrawable类,void start() - 开始播放动画;void stop() - 停止播放动画;addFrame(Drawable frame, int duration) - 添加一帧,并设置该帧显示的持续时间;void setOneShoe(boolean flag) - false为循环播放,true为仅播放一次;boolean isRunning() - 是否正在播放。

    常用使用场景:较为复杂的个性化动画效果,比如自定义loading加载框等

    主要效果:

    详细使用步骤:https://www.jianshu.com/p/225fe1feba60

     

    属性动画(Propety Animation)

    属性动画:属性动画是Android 3.0 (API level 11)才加入的,通过控制属性来实现动画,最为强大的动画,弥补了补间动画的缺点,实现位置+视觉的变化。并且可以定义时长、时间插值、重复次数、动画集Animator sets、帧频率等属性实现各种效果。

    作用对象:任意java对象,甚至没对象都可以,通过改变对象的属性。

    核心类:ValueAnimator(在一个特定的时间里执行一个动画), TimeAnimator(时序监听回调工具), ObjectAnimator(一个对象的一个属性动画), AnimatorSet (动画集合) ,TypeEvaluator(类型估值(估值器接口),设置属性值计算方式,根据属性的 & 末值 插值 一起计算出当前时间的属性值), AnimatorInflater(加载属性动画的XML文件)等。

    工作原理:

    常用使用场景:1、弥补了之前补间动画的一些缺陷,几乎是可以完全替代掉补间动画;2、在自定义 View 时,需要实现一些复杂的动画效果,或对 View 的一些特殊属性值进行动画变更时,视图动画无法实现时;3、属性动画你也可以用在非动画场景,比如,你在自定义 View 需要一个有一定规律(根据特定差值器变化)且可监听的数值变化器,这个时候借助属性动画是再合适不过了。等

    主要效果:

    能够实现多种动画效果。

    详细使用步骤:https://blog.csdn.net/guolin_blog/article/details/43536355

    触摸反馈动画(Ripple Effect)

    触摸反馈动画:Android5.0以上,所谓触摸反馈动画就是一种点击效果,作用在可点击的 View 上时,当有点击事件时会有涟漪般的反馈效果。

    作用对象:可点击的view上。

    核心类:RippleView等。

    常用使用场景:水波纹按钮或者可点击视图等。

    主要效果:

    详细使用步骤:https://blog.csdn.net/w690333243/article/details/73368867

    揭露动画(Reveal Effect)

    揭露动画:Android5.0以上,揭露动画在系统中很常见,就是类似波纹的效果, 从某一个点向四周展开或者从四周向某一点聚合起来。

    作用对象:view上。

    核心类:ViewAnimationUtil。

    常用使用场景:可以用在 Activity 里面的 View 动画效果, 也可以使用在 Activity 跳转过渡动画中,如下图使用在 View 的显示隐藏的效果图

    主要效果:

    详细使用步骤:https://blog.csdn.net/ss1168805219/article/details/55319108

    转场动画 & 共享元素(Activity 切换动画)

    揭露动画:谷歌Android5.0以上开始集成了更多更全面更易于开发者定义的的转场动画和共享元素动画。

    常用使用场景:1、转场效果我们一般用在 Activity 切换时的动画效果上;2、共享元素一般我们使用在转换的前后两个页面有共同元素时,同时也可以在 Activity 布局发生场景变化时,让其中的 View 产生相应的过渡动画。

    主要效果:

    http://upload-images.jianshu.io/upload_images/699911-693520e8f55a1f26.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240

    详细使用步骤:https://blog.csdn.net/wangwangli6/article/details/70210932

    视图状态动画(Animate View State Changes)

    视图状态动画:Android5.0以上,所谓视图状态动画,就是 View 在状态改变时执行的动画效果,当 View 的状态改变时,希望此时显示的效果和静态效果有所区分,即显示效果也做出相应的改变,比如 Z 轴抬高,大小改变、或其他动画效果等;和之前我们通过 selector 选择器给 Button 设置不同状态下的背景效果是一样一样的。

    作用对象:view上。

    核心类:StateListAnimator(是个动画, 在 res/anim (或者 res/animator)中),AnimatedStateListDrawable ( 是个 Drawable, 在 res/drawable 中) 。

    常用使用场景:个按钮被点击后设置的视图状态动画,比如点赞,收藏等。

    主要效果:

     

    详细使用步骤:https://www.jianshu.com/p/d1fdfe546595

    矢量图动画(Vector 动画)

    矢量图动画:VectorDrawable 一般是以 <vector> 为根标签定义的 XML 文件,<vector>、<group>、<clip-path>、<path> 元素都有各自可以播放动画的属性。静态 Vector 支持 Android2.1+ ,动态 Vector 支持 Android3.0+ (属性动画 Android3.0+ (api>=11)) ,动态部分不兼容AndroidL(5.0)以下 (path Morphing)。

    VectorDrawable是为了让Android支持SVG(点击可查看SVG动画)而诞生的

    核心类:StateListAnimator(是个动画, 在 res/anim (或者 res/animator)中),AnimatedStateListDrawable ( 是个 Drawable, 在 res/drawable 中) 。

    常用使用场景:1、具有动态变换效果的图标;2、也可以用在需要特定动画效果的 VectorDrawable 图片上等。

    主要效果:

     

    详细使用步骤:https://www.jianshu.com/p/e71978a6cffa

    约束布局实现的关键帧动画(ConstraintSet 动画)

    约束布局实现的关键帧动画: API 19以上,所谓关键帧动画,就是给需要动画效果的属性,准备一组与时间相关的值,这些值都是在动画序列中比较关键的帧中提取出来的,而其他时间帧中的值,可以用这些关键值,采用特定的插值方法计算得到,从而达到比较流畅的动画效果。注:ConstraintLayout只支持约束布局的动画,不支持其他属性(如坐标修改,文字修改等)。

    核心类:ConstraintSet ,TransitionManager 

    常用使用场景:1、布局嵌套过多的问题;2、布局可视化支持不够友好的问题等。

    详细使用步骤:https://www.jianshu.com/p/c585180af02b

    自定义view实现动画

    仿小米视频加载动画:

    https://blog.csdn.net/u013094278/article/details/75450534

    贝塞尔曲线,比如仿直播或者饿了么购物车动画:

    https://blog.csdn.net/ytwe520/article/details/78476719

    切换主题,仿酷安客户端动画:

    https://blog.csdn.net/u011387817/article/details/79604418

    音录音播放动画

    https://www.cnblogs.com/ldq2016/p/6692322.html

    仿ins、微博头像加载动画:

    https://www.jianshu.com/p/a0e2dbeef88a

    展开全文
  • Android的动画基本分类

    千次阅读 2018-05-02 13:23:53
    1、Android动画可以分为帧动画(Frame Animation)、补间动画(Tweened Animation)和属性动画。比较:a、属性动画是真正的实现了view的移动,补间动画对view的移动更像是在不同地方绘制了一个影子,实际的对象还是...
    1、Android动画可以分为帧动画(Frame Animation)、补间动画(Tweened Animation)和属性动画。
    比较:
    a、属性动画是真正的实现了view的移动,补间动画对view的移动更像是在不同地方绘制了一个影子,实际的对象还是处于原来的地方。
    b、属性动画会使Activity无法释放而导致内存泄漏,而补间动画却没有问题。因此,使用属性动画时切记在Activity执行 onStop 方法时顺便将动画停止。
    c、xml 文件实现的补间动画,复用率极高。在Activity切换,窗口弹出时等情景中有着很好的效果。
    d、使用帧动画时需要注意,不要使用过多特别大的图,容易导致内存不足。
    2、帧动画,最容易实现的一种动画,这种动画更多的依赖于完善的UI资源,他的原理就是将一张张单独的图片连贯的进行播放,从而在视觉上产生一种动画的效果,可以说,图片资源决定了这种方式可以实现怎样的动画。有点类似于某些软件制作gif动画的方式。
    注:android:oneshot="false" ,这个oneshot 的含义就是动画执行一次(true)还是循环执行多次。
    3、补间动画,可以分为四种形式,分别是 alpha(淡入淡出),translate(位移),scale(缩放大小),rotate(旋转)。补间动画的实现,一般会采用xml 文件的形式,代码会更容易书写和阅读,同时也更容易复用;动画的属性值需要动态的调整时,需要使用java代码实现。可以使用set 标签将多个动画组合。
    部分动画属性的含义:
    Interpolator 主要作用是可以控制动画的变化速率 ,就是动画进行的快慢节奏。
    pivot 决定了当前动画执行的参考位置。pivot 这个属性主要是在translate 和 scale 动画中,这两种动画都牵扯到view 的“物理位置“发生变化,所以需要一个参考点。而pivotX和pivotY就共同决定了这个点;它的值可以是float或者是百分比数值。
    4、属性动画,顾名思义它是对于对象属性的动画。因此,所有补间动画的内容,都可以通过属性动画实现。属性动画实现很方便,同时动画可变化的值也有了更多的选择,动画所能呈现的细节也更多。属性动画可以使用xml文件的方式实现,但是属性动画的属性值一般会牵扯到对象具体的属性,更多是通过代码动态获取。
    ObjectAnimator,这个类继承自ValueAnimator,使用这个类可以对任意对象的任意属性进行动画操作,而ValueAnimator是整个属性动画机制当中最核心的一个类。
    属性动画的运行机制是通过不断地对值进行操作来实现的,而初始值和结束值之间的动画过渡就是由ValueAnimator这个类来负责计算的。它的内部使用一种时间循环的机制来计算值与值之间的动画过渡,我们只需要将初始值和结束值提供给ValueAnimator,并且告诉它动画所需运行的时长,那么ValueAnimator就会自动帮我们完成从初始值平滑地过渡到结束值这样的效果。除此之外,ValueAnimator还负责管理动画的播放次数、播放模式、以及对动画设置监听器等。
    属性动画的具体实现,通过duration、startPropertyValue和endPropertyValue 等值,我们就可以定义动画运行时长,初始值和结束值,然后通过start方法开始动画,ValueAnimator是由TypeEvaluator 和TimeInterpolator 共同实现从初始值平滑过渡到结束值的。具体来说,TypeEvaluator 决定了动画如何从初始值过渡到结束值。
    TimeInterpolator 决定了动画从初始值过渡到结束值的节奏。
    TimeInterpolator,是用来控制动画快慢节奏的。TimeInterpolator 继承自Interpolator。我们可以继承TimerInterpolator 以自己的方式控制动画变化的节奏,也可以使用Android 系统提供的Interpolator,通过setInterpolator 设置不同的Interpolator。


    展开全文
  • android动画的几种形式

    千次阅读 2016-12-13 11:28:09
    android的动画有很多种,我今天主要讲的是用的比较基础的三种。帧动画补间动画和属性动画。 帧动画是比较简单的动画就是几个图片组装在一起轮流执行,从而形成动画效果。 xml布局 xml version="1.0" encoding=...
  • 前言 Android系统支持原生动画,这为应用开发者开发绚丽的界面提供了极大的方便,有时候动画是很必要的,当你想做一个...动画分类 View动画:也叫渐变动画,针对View的动画,主要支持平移、旋转、缩放、透明度 Dr
  • Android动画

    2017-08-01 14:59:58
    1. Android动画分类 2. View动画 3. 自定义View动画 4. 帧动画 5. View动画的使用场景 6. 属性动画的使用及其原理 7. 动画使用中的注意事项1. Android动画分类Android的动画分为三类:View动画、帧动画、...
  • 动画机制总结

    2017-12-01 19:16:22
    1.1 Android动画类型分类 1.2 Android动画实现方式分类 1.3 按照时间分类 2.Android逐帧动画 2.1 逐帧动画简单介绍 2.2 逐帧动画XML资源文件方式 2.3 逐帧动画代码方式 3.Android补间动画 3.1 补间...
  • 补间动画,帧动画

    2016-10-26 10:32:52
    Android 动画详解开始的...4. android 动画实现的原理第一个问题:android 动画是什么这个问题很明显了 就不用回答了第二个问题:android动画分类android 动画一共分为三类 1. View Animation 也叫补间动画,是andro
  • Android中的动画

    千次阅读 2017-05-09 06:12:25
    学习内容Ø 帧动画Ø 补间动画Ø 动画方式切换组件能力目标Ø 掌握Android中动画的基本概念及分类Ø 熟练掌握帧动画的实现Ø 熟练掌握各种补间动画的实现Ø 掌握如何使用动画方式实现组件之间的切换效果本章...
  • 3D动画概述暨骨骼动画实现

    千次阅读 2017-12-20 10:31:53
    不同于其他文章简单的罗列和介绍每种类型的3D动画,本文尝试以一种优化演进的思路对动画运作机理进行递进式推演,在这个过程中自然而然的推导出常见的几种3D动画类型,以此证明其出现的必要性和合理性。本文尽量以...
  • Android动画(一):View动画(补间动画)

    千次阅读 2016-08-07 10:00:32
    二、分类:View动画(补间动画)、帧动画、属性动画.三、详细介绍: ①View动画(补间动画):通过对场景里的对象不断做图像变换(平移、缩放、旋转、透明度),而产生动画效果,是一种渐进的动画,还可以自定义。②帧...
  • 隐式动画和显式动画

    千次阅读 2015-06-18 13:20:37
    隐式动画和显式动画 隐式动画 我们在第一部分讨论了Core Animation除了动画之外可以做到的任何事情。但是动画师Core Animation库一个非常显著的特性。这一章我们来看看它是怎么做到的。具体来说,我们先来讨论...
  • 游戏开发入门(五)游戏动画系统

    万次阅读 多人点赞 2018-01-30 18:11:38
    视频链接:游戏开发入门(五)游戏动画系统(8节课 时常:约2小时30分钟) PPT比视频要块一些 第二节与PPT对不上 视频中杂音太大,如果带耳机还听不清的话,建议直接看内容即可 笔记与总结(请先学习视频内容)...
  • Android系统支持原生动画,这为应用开发者开发绚丽的界面提供了极大的方便,有时候动画是很必要的,当你想做一个滑动的特效的...动画分类 View动画:也叫渐变动画,针对View的动画,主要支持平移、旋转、缩放、透明度
  • Android中动画类型,按照系统版本可以简单的分为两大类型,一种是传统的动画,也就是Android中最常用的View动画,即帧动画和补间动画;...View动画动画和补间动画是安卓中最常见的动画,表现形式有AlphaAni
  • 在Tween动画的讨论中,我们提到在Android中动画可以分为三类:①帧动画②Tween(补间动画)③Property Animation(属性动画),在前面的文章中,分别对帧动画和Tween动画进行了非常详细的讨论,如果有兴趣可以去上面的...
  • Android三大动画使用总结

    千次阅读 2019-01-13 11:15:39
    Frame Animation,逐帧动画是一种常见的动画形式,其原理是在“连续的关键帧”中分解动画动作,也就是在时间轴的每帧上逐帧绘制不同的内容,使其连续播放而成动画。 简单理解: 连续播放准备好的关键帧图片,形成...
  • Android 动画详解

    2015-04-10 10:07:17
     动画(Animation)在我们日常的Android开发工作当中使用得较为频繁,尤其对于Android游戏这个动画的集合体,掌握动画开发的重要性毋庸置疑。同样的,在Android应用开发中我们也经常使用动画效果来提升APP用户体验,...
  • Android动画大合集

    千次阅读 2018-06-25 00:30:11
      android中的动画实现方式繁多,在项目中也经常用到动画,网上有很多人也都进行了一些总结,但是感觉还是零零散散,自己总结一下才能加深印象,以后有时间了,也可以从各个分类里进一步去补充完善。 如果喜欢看...
  • Core Animation基于一个假设,说屏幕上的任何东西都可以(或者可能)做动画动画并不需要你在Core Animation中手动打开,相反需要明确地关闭,否则他会一直存在。 当你改变CALayer的一个可做动画的属性,它并不...
  • iOS 动画篇 - UIKit动画(一)

    千次阅读 2018-12-04 17:55:15
    在前面文章中,有详细介绍过 Core Animation 动画,UIKit 动画实质上是针对核心动画的封装,不同的是,核心动画操作的是图层级别(CALayer),通常情况下,它不会影响到视图层,而 UIKit 针对的是视图级别(UIView)...
  • View动画(视图动画) 定义View动画和使用 XML形式 代码动态 自定义View动画动画 View动画的特殊使用场景 Acitivity切换动画 Fragment切换动画 布局动画 XML形式 Animator ObjectAnimator XML形式 监听器 ...
  • 通过核心动画创建基础动画、关键帧动画动画组、转场动画,如何通过UIView的装饰方法对这些动画操作进行简化等。在今天的文章里您可以看到动画操作在iOS中是如何简单和高效,很多原来想做但是苦于没有思路的动画在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,488
精华内容 6,195
关键字:

动画形式类型分类