`
zhuxinzx
  • 浏览: 293688 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Android动画之translate(位移动画)

 
阅读更多

Activity的切换效果使用的是Android的动画效果,Android的动画在官方有相关资料:http://developer.android.com/guide/topics/graphics/animation.htmlhttp://developer.android.com/guide/topics/resources/animation-resource.html Activity的切换动画实际上是AndroidView Animation(视图动画)中的Tween Animation效果,Tween Animation分为4种动画效果,分别是:alpha (透明变化) translate(位置移动) scale(缩放) rotate(旋转), 而左右滑动切换使用的是 translate(位置移动)的效果,在下一篇我们再讨论一下 alpha (透明变化scale(缩放) rotate(旋转这三种效果,本篇只将 translate(位置移动)

Translate动画是非常好理解,就是定义一个开始的位置和一个结束位置,定义移动时间,然后就能自动产生移动动画。Androidtranslate移动方向有 横向(X) 竖向(Y), 左右滑动使用了横向移动效果,对于竖向(Y)的位置如下:


定义一个向上退出的动画(从位置移动位置3)和从下面进入(从位置1移动位置2)的动画定义文件如下:

out_to_up.xml (从屏幕上面退出)

<?xml version="1.0" encoding="utf-8"?>

<translate xmlns:android="http://schemas.android.com/apk/res/android"

    android:interpolator="@android:anim/accelerate_interpolator"

    android:fromYDelta="0%p"

    android:toYDelta="-100%p"

    android:duration="1000">

</translate>

in_from_down.xml (从屏幕下面进入)

<?xml version="1.0" encoding="utf-8"?>

<translate xmlns:android="http://schemas.android.com/apk/res/android"

    android:interpolator="@android:anim/accelerate_interpolator"

    android:fromYDelta="100%p"

    android:toYDelta="0%p"

    android:duration="1000">

</translate>

接下来讲一讲translate的几个重要的属性:

android:interpolator: 加速器,非常有用的属性,可以简单理解为动画的速度,可以是越来越快,也可以是越来越慢,或者是先快后忙,或者是均匀的速度等等,对于值如下:

@android:anim/accelerate_interpolator 越来越快

@android:anim/decelerate_interpolator:越来越慢

@android:anim/accelerate_decelerate_interpolator:先快后慢

@android:anim/anticipate_interpolator: 先后退一小步然后向前加速

@android:anim/overshoot_interpolator:快速到达终点超出一小步然后回到终点

@android:anim/anticipate_overshoot_interpolator:到达终点超出一小步然后回到终点

@android:anim/bounce_interpolator:到达终点产生弹球效果,弹几下回到终点

@android:anim/linear_interpolator:均匀速度。

android:duration: 动画运行时间,定义在多次时间(ms)内完成动画

android:startOffset: 延迟一定时间后运行动画

fromXDelta: X轴方向开始位置,可以是%,也可以是具体的像素 具体见图

toXDelta:   X轴方向结束位置,可以是%,也可以是具体的像素

fromYDelta: Y轴方向开始位置,可以是%,也可以是具体的像素

toYDelta:    Y轴方向结束位置,可以是%,也可以是具体的像素

 

当你了解上面的属性后,你可以组合出很多有趣的位置移动效果。比如使用加速器:@android:anim/bounce_interpolator 可以产生弹球落地时的效果。

在实际项目中需要在进行只使用“左右上下滑动”的效果可能还不够炫,希望在切换时能产生更动态的效果,比如开始切换时第1Activity先向后退一步,然后在向左方向退出屏幕。然后第2Activity紧跟后面从右边进入屏幕,到达终点时有一个动态效果。在了解了动画加速器后,大家都知道可以采用:anticipate_overshoot_interpolatoranticipate_interpolatorovershoot_interpolator这三个加速器实现左右滑动切换时启动或者结束的动态效果。

动画文件定义如下:

dync_out_to_left.xml 

<?xml version="1.0" encoding="utf-8"?>

<translate xmlns:android="http://schemas.android.com/apk/res/android"

    android:duration="500"

    android:fromXDelta="0%p"

    android:interpolator="@android:anim/anticipate_interpolator"

    android:toXDelta="-100%p" />

dync_in_from_right.xml

<?xml version="1.0" encoding="utf-8"?>

<translate xmlns:android="http://schemas.android.com/apk/res/android"

    android:duration="500"

    android:fromXDelta="100%p"

    android:interpolator=" @android:anim/anticipate_overshoot_interpolator "

    android:toXDelta="0%p" />

但是再使用以上动画配置,会出现以下问题:

1.     1Activity使用anticipate_interpolator时,开始移动时先向后退一步,然后向前移动。但向后退一步步伐太大,略显夸张,实际应用中只希望退后一小小步就行了。

2.     由于开始向后退一步,额外增加了移动时间,导致前一Activity和后一个Activity的时间不同步。

为了解决以上问题,重新定义动态效果,将第1Activity的移动分为2个动画效果:(1)用200毫秒时间先向后移动2%p的位置 (2) 延迟200毫秒后从2%p位置向前移动到-100%p位置。 然后第2Activity从延迟200毫秒然后从102%p位置移动到0%p位置。

动画定义如下:

new_dync_out_to_left.xml

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android"

    android:shareInterpolator="false" >

 

    <translate

        android:duration="200"

        android:fromXDelta="0%p"

        android:interpolator="@android:anim/accelerate_decelerate_interpolator"

        android:toXDelta="2%p" />

    <translate

        android:duration="1000"

        android:fromXDelta="2%p"

        android:interpolator="@android:anim/accelerate_interpolator"

        android:startOffset="200"

        android:toXDelta="-100%p" />

 

</set>

new_dync_in_from_right.xml

 

<?xml version="1.0" encoding="utf-8"?>

<translate xmlns:android="http://schemas.android.com/apk/res/android"

    android:duration="1000"

    android:fromXDelta="102%p"

    android:interpolator="@android:anim/anticipate_overshoot_interpolator"

    android:startOffset="200"

    android:toXDelta="0%p" />

配套代码:http://www.oschina.net/code/snippet_97118_7734

分享到:
评论

相关推荐

    Android 积分签到动画 位移+透明 Android签到动画效果 签到上移消失动画效果

    在Android开发中,动画是提升用户体验的关键因素之一。本文将深入探讨如何实现“Android积分签到动画”,这种动画结合了位移和透明度变化,使签到元素在完成签到后优雅地消失。我们将主要关注以下几点:动画原理、...

    Android动画效果--渐变动画

    渐变动画是Android动画体系中的一种基本类型,它可以为用户界面带来生动和动态的感觉。本文将深入探讨四种主要的渐变动画:Alpha(透明度)、Scale(缩放)、Translate(平移)和Rotate(旋转),以及如何通过Java...

    Android晃动动画例子

    在Android开发中,动画是提升用户体验的关键元素之一。"Android晃动动画例子"是一个示例项目,它展示了如何创建一个让视图左右晃动的动画效果。这种效果常见于错误提示、撤销操作或者游戏中的某些交互。下面我们将...

    android动画循环移动

    "android动画循环移动"是一个关于如何在Android平台上实现元素连续、循环移动的示例。这个demo展示了如何利用Android的动画框架来创建平移效果,并让动画无缝地交替播放,常用于屏保或者动态界面的设计。 首先,...

    android 动画之基础动画 alpha(渐变) scale(缩放) translate(移动) rotate(旋转)

    在Android开发中,动画是提升用户体验的关键因素之一。Android提供了多种动画机制,其中包括基础动画,它们分别是Alpha(渐变透明度)、Scale(缩放)、Translate(移动)和Rotate(旋转)。接下来,我们将深入探讨...

    四种常用的动画效果Alpha,Scale,Translate,Rotate

    总的来说,通过XML配置实现的Android动画机制为开发者提供了丰富的可能性,让应用的交互变得更加丰富多彩。在`myActionAnimation`这个项目中,你可以找到这些动画效果的具体实现代码,进一步学习和实践。

    动画效果 translate、scale、alpha、rotate 切换Activity动画 控件位置调整

    在Android开发中,动画是提升用户体验的关键因素之一。本文将深入探讨如何利用translate、scale、alpha和rotate这四种基本动画效果来实现Activity的切换动画以及控件的位置调整。这些动画效果能够使应用更加生动和...

    Android中用xml配置平移动画的代码清单.pdf

    在Android开发中,动画是提升用户体验的关键因素之一。Android提供了多种动画类型,其中包括补间动画(Tween Animation),它可以实现平移、旋转、透明度变化和缩放等效果。本篇文章将详细探讨如何在Android中使用...

    Android_动画效果

    #### 二、Android动画类型 Android的`animation`模块主要包括以下四种类型的动画: 1. **透明度动画(Alpha Animation)**:用于改变视图的透明度。 2. **尺寸伸缩动画(Scale Animation)**:用于改变视图的尺寸...

    Android动画学习笔记之补间动画

    以位移动画(Translate Animation)为例,我们可以设置视图从当前位置平移到另一个位置: 创建方式一(XML): ```xml &lt;translate xmlns:android="http://schemas.android.com/apk/res/android" android:...

    Android——给控件添加动画

    通过`android:fromXDelta`和`android:toXDelta`来控制水平方向的位移,`android:fromYDelta`和`android:toYDelta`控制垂直方向的位移。 2. **缩放动画(Scale Animation)** 缩放动画用于改变控件的大小,通过`...

    常用的android动画 xml文件

    在Android开发中,动画是提升用户体验的关键因素之一。XML文件被广泛用于定义和实现各种类型的动画,这使得代码更加清晰,易于维护,并且可以独立于应用程序的运行时代码。本篇将详细介绍Android中使用XML文件创建...

    Android xml形式实现Tween动画

    3. **Translate位移动画** Translate动画使View在屏幕上平移。XML配置如下: ```xml &lt;translate xmlns:android="http://schemas.android.com/apk/res/android" android:fromXDelta="0%" android:toXDelta="100...

    Android动画介绍-补间动画(2)

    在Android开发中,动画是提升用户体验的关键因素之一。补间动画是Android提供的基本动画类型,它通过对对象在一定时间内的连续变化来实现平滑的视觉效果。本篇将深入探讨补间动画的第二部分,主要关注如何使用`...

    android广告滚动(利用动画)

    这个过程涉及到的知识点包括:Android动画系统、TranslationAnimation的使用、定时器和定时任务的创建以及事件监听机制。在实际开发中,我们还可以根据需求进行调整和优化,比如添加更丰富的动画效果,或者加入用户...

    android 基本动画实现

    在Android开发中,动画是提升用户体验的关键因素之一。Android提供了多种动画机制,使得开发者能够创造出丰富多样的动态效果。本示例主要关注Android的基本动画实现,涵盖了帧动画、旋转、淡入淡出以及位移等常见...

    android 动画

    4. **Translate位移动画**:改变View的位置。 这些动画可以通过XML文件定义,也可以通过Java代码动态创建。例如,一个简单的旋转动画可以通过以下XML代码定义: ```xml xmlns:android=...

    Android两Avitivity移动和旋转动画

    在Android应用开发中,动画是提升用户体验的关键元素之一。本示例主要关注的是在两个Activity之间进行移动和旋转动画的实现。这样的动画效果通常用于页面切换,为用户提供平滑、流畅的过渡体验。下面我们将详细探讨...

    android中的动画(Animation)详解

    在Android开发中,动画是提升用户体验的关键因素之一。Android提供了两种主要的动画类型:帧动画和补间动画,这两种动画各有特点,适用于不同的场景。 **帧动画**是基于一系列连续图像播放来创建动画效果的方法。这...

    Android中数百种动画效果源码

    视图动画在API level 8及以下版本中广泛使用,包括Alpha(透明度变化)、Translate(位移)、Rotate(旋转)和Scale(缩放)等基本动画。这些动画作用于视图对象,但并不真正改变视图的状态,只是视觉上的欺骗。 ...

Global site tag (gtag.js) - Google Analytics