zoukankan      html  css  js  c++  java
  • 【Android界面实现】View Animation 使用介绍

        转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992

        我们能够使用view animation 动画系统来给View控件加入tween动画(下称“补间动画”),补间动画通过计算一些动画參数,比方说開始点,结束点,大小,旋转角度和一些其它的动画參数。来实现动画效果。

        补间动画能够给View对象加入一系列简单的变换。比方位置,大小,角度或者是透明度。所以,假设你有一个TextView对象。你能够移动,旋转或者是变大。

    假设它有一个背景图片,背景图片也会随着text进行变化。

        http://developer.android.com/reference/android/view/animation/package-summary.html 这个地址提供了补间动画须要的全部类。

        一系列的动画指令被定义为补间动画,我们能够使用xml文件或者是纯代码进行定义。当我们想定义一个布局的时候。xml文件更加的方便,由于相对于硬编码。它可读性好、复用性强而且易于替换。所以,在以下的实例中,我们将使用xml的方式(想要了解很多其它的关于硬编码而不是xml方式的信息,请查阅AnimationSet类和Animation的子类)。

        我们能够通过设置属性来决定我们想要动画什么时候发生,持续的时长等等。

    动画的变换能够是顺序发生的,也能够是同一时候发生的。比方。我们能够把一个TextView从左移动到右,然后旋转180度。或者是,我们能够让移动的动画和旋转动画同一时候发生。

    每一种动画变换都须要设置自己特有的属性集合(大小变化须要设置開始大小和结束大小,旋转变化须要设置開始角度和结束角度,其它的也相似),还须要设置一些共同的属性,比方開始时间和持续时间。

    假设我们想让非常多变换一起发生,给他们设置同样的開始时间就可以。假设想让变换顺序发生,我们仅仅须要把開始时间设置成前面动画的持续总时间就能够了。

       假设我们想通过xml文件创建动画,我们须要在project的res文件夹下,创建一个anim文件夹。文件必须有且仅仅有一个根元素。比方<alpha>,<scale>,<translate>,<rotate>,插值器元素。或者是一个<set>元素里面包括这些动画元素(也能够再包括一个set元素)。假设我们想让动画顺序发生,我们比方设置单独的startOffset属性。就像以下的样例。

        以下的这个xml文件来自ApiDemo,用来伸缩然后同一时候旋转一个View对象。

    <set android:shareInterpolator="false">
        <scale
            android:interpolator="@android:anim/accelerate_decelerate_interpolator"
            android:fromXScale="1.0"
            android:toXScale="1.4"
            android:fromYScale="1.0"
            android:toYScale="0.6"
            android:pivotX="50%"
            android:pivotY="50%"
            android:fillAfter="false"
            android:duration="700" />
        <set android:interpolator="@android:anim/decelerate_interpolator">
            <scale
               android:fromXScale="1.4"
               android:toXScale="0.0"
               android:fromYScale="0.6"
               android:toYScale="0.0"
               android:pivotX="50%"
               android:pivotY="50%"
               android:startOffset="700"
               android:duration="400"
               android:fillBefore="false" />
            <rotate
               android:fromDegrees="0"
               android:toDegrees="-45"
               android:toYScale="0.0"
               android:pivotX="50%"
               android:pivotY="50%"
               android:startOffset="700"
               android:duration="400" />
        </set>
    </set>

        屏幕的坐标系的(0。0)点在屏幕的左上角上面。向右为x正坐标,向下是y的正坐标。

        一些值,比方说pivotX,能够指定与自身或者是父类相关。请确保你使用的格式是你想要的效果的正确格式,比方,50%是相对于自身的50%,可是50就不一样了。

        我们也能够指定一个interpolator(插值器)来确定变换的时间怎样变化。Android里面包括了几中插值器子类。每一种都有自己的加速度曲线。比方accelerateInterpolator,会告诉变换在開始的时候速度比較慢。然后開始加速。我们能够在xml里面设置相关的属性。

        假设我们把上面的代码叫做hyperspace_jump.xml,那么我们使用以下的代码。给一个ImageView控件加入动画。

        

    ImageView spaceshipImage = (ImageView) findViewById(R.id.spaceshipImage);
    Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
    spaceshipImage.startAnimation(hyperspaceJumpAnimation);
        作为startAnimatinon()的一个可选的方式。我们能够使用Animation,setStartTime()设置開始时间。然后使用View,setAnimation()设置动画

        假设想了解很多其它XML使用方法和可选的tag的属性,请查看Animation Resources。

        Note:

        无论你的动画是移动还是放缩,设置了动画的View控件的边界都不会自己主动调整去适应,即使如此,动画依旧会被绘制出来,及时超出了边界也不会被分割。然而,假设动画超出了父View的范围,那超出部分就会被分割。


        原文地址:http://developer.android.com/guide/topics/graphics/view-animation.html

  • 相关阅读:
    iOS基础
    iOS基础
    iOS基础
    iOS基础
    iOS基础
    iOS基础
    iOS基础
    简单DP + 高精
    高精度计算
    树 (tree)
  • 原文地址:https://www.cnblogs.com/llguanli/p/8697993.html
Copyright © 2011-2022 走看看