Activity的切换效果使用的是Android的动画效果,Android的动画在官方有相关资料:http://developer.android.com/guide/topics/graphics/animation.html和http://developer.android.com/guide/topics/resources/animation-resource.html ,Activity的切换动画实际上是Android的View Animation(视图动画)中的Tween Animation效果,Tween Animation分为4种动画效果,分别是:alpha (透明变化) translate(位置移动) scale(缩放) rotate(旋转), 而左右滑动切换使用的是 translate(位置移动)的效果,在下一篇我们再讨论一下 alpha (透明变化) 、scale(缩放)、 rotate(旋转) 这三种效果,本篇只将 translate(位置移动)。
Translate动画是非常好理解,就是定义一个开始的位置和一个结束位置,定义移动时间,然后就能自动产生移动动画。Android的translate移动方向有 横向(X) 竖向(Y), 左右滑动使用了横向移动效果,对于竖向(Y)的位置如下:
定义一个向上退出的动画(从位置2 移动位置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 可以产生弹球落地时的效果。
在实际项目中需要在进行只使用“左右上下滑动”的效果可能还不够炫,希望在切换时能产生更动态的效果,比如开始切换时第1个Activity先向后退一步,然后在向左方向退出屏幕。然后第2个Activity紧跟后面从右边进入屏幕,到达终点时有一个动态效果。在了解了动画加速器后,大家都知道可以采用:anticipate_overshoot_interpolator、anticipate_interpolator、overshoot_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. 第1个Activity使用anticipate_interpolator时,开始移动时先向后退一步,然后向前移动。但向后退一步步伐太大,略显夸张,实际应用中只希望退后一小小步就行了。
2. 由于开始向后退一步,额外增加了移动时间,导致前一Activity和后一个Activity的时间不同步。
为了解决以上问题,重新定义动态效果,将第1个Activity的移动分为2个动画效果:(1)用200毫秒时间先向后移动2%p的位置 (2) 延迟200毫秒后从2%p位置向前移动到-100%p位置。 然后第2个Activity从延迟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动画体系中的一种基本类型,它可以为用户界面带来生动和动态的感觉。本文将深入探讨四种主要的渐变动画:Alpha(透明度)、Scale(缩放)、Translate(平移)和Rotate(旋转),以及如何通过Java...
在Android开发中,动画是提升用户体验的关键元素之一。"Android晃动动画例子"是一个示例项目,它展示了如何创建一个让视图左右晃动的动画效果。这种效果常见于错误提示、撤销操作或者游戏中的某些交互。下面我们将...
"android动画循环移动"是一个关于如何在Android平台上实现元素连续、循环移动的示例。这个demo展示了如何利用Android的动画框架来创建平移效果,并让动画无缝地交替播放,常用于屏保或者动态界面的设计。 首先,...
在Android开发中,动画是提升用户体验的关键因素之一。Android提供了多种动画机制,其中包括基础动画,它们分别是Alpha(渐变透明度)、Scale(缩放)、Translate(移动)和Rotate(旋转)。接下来,我们将深入探讨...
总的来说,通过XML配置实现的Android动画机制为开发者提供了丰富的可能性,让应用的交互变得更加丰富多彩。在`myActionAnimation`这个项目中,你可以找到这些动画效果的具体实现代码,进一步学习和实践。
在Android开发中,动画是提升用户体验的关键因素之一。本文将深入探讨如何利用translate、scale、alpha和rotate这四种基本动画效果来实现Activity的切换动画以及控件的位置调整。这些动画效果能够使应用更加生动和...
在Android开发中,动画是提升用户体验的关键因素之一。Android提供了多种动画类型,其中包括补间动画(Tween Animation),它可以实现平移、旋转、透明度变化和缩放等效果。本篇文章将详细探讨如何在Android中使用...
#### 二、Android动画类型 Android的`animation`模块主要包括以下四种类型的动画: 1. **透明度动画(Alpha Animation)**:用于改变视图的透明度。 2. **尺寸伸缩动画(Scale Animation)**:用于改变视图的尺寸...
以位移动画(Translate Animation)为例,我们可以设置视图从当前位置平移到另一个位置: 创建方式一(XML): ```xml <translate xmlns:android="http://schemas.android.com/apk/res/android" android:...
通过`android:fromXDelta`和`android:toXDelta`来控制水平方向的位移,`android:fromYDelta`和`android:toYDelta`控制垂直方向的位移。 2. **缩放动画(Scale Animation)** 缩放动画用于改变控件的大小,通过`...
在Android开发中,动画是提升用户体验的关键因素之一。XML文件被广泛用于定义和实现各种类型的动画,这使得代码更加清晰,易于维护,并且可以独立于应用程序的运行时代码。本篇将详细介绍Android中使用XML文件创建...
3. **Translate位移动画** Translate动画使View在屏幕上平移。XML配置如下: ```xml <translate xmlns:android="http://schemas.android.com/apk/res/android" android:fromXDelta="0%" android:toXDelta="100...
在Android开发中,动画是提升用户体验的关键因素之一。补间动画是Android提供的基本动画类型,它通过对对象在一定时间内的连续变化来实现平滑的视觉效果。本篇将深入探讨补间动画的第二部分,主要关注如何使用`...
这个过程涉及到的知识点包括:Android动画系统、TranslationAnimation的使用、定时器和定时任务的创建以及事件监听机制。在实际开发中,我们还可以根据需求进行调整和优化,比如添加更丰富的动画效果,或者加入用户...
在Android开发中,动画是提升用户体验的关键因素之一。Android提供了多种动画机制,使得开发者能够创造出丰富多样的动态效果。本示例主要关注Android的基本动画实现,涵盖了帧动画、旋转、淡入淡出以及位移等常见...
4. **Translate位移动画**:改变View的位置。 这些动画可以通过XML文件定义,也可以通过Java代码动态创建。例如,一个简单的旋转动画可以通过以下XML代码定义: ```xml xmlns:android=...
在Android应用开发中,动画是提升用户体验的关键元素之一。本示例主要关注的是在两个Activity之间进行移动和旋转动画的实现。这样的动画效果通常用于页面切换,为用户提供平滑、流畅的过渡体验。下面我们将详细探讨...
在Android开发中,动画是提升用户体验的关键因素之一。Android提供了两种主要的动画类型:帧动画和补间动画,这两种动画各有特点,适用于不同的场景。 **帧动画**是基于一系列连续图像播放来创建动画效果的方法。这...
视图动画在API level 8及以下版本中广泛使用,包括Alpha(透明度变化)、Translate(位移)、Rotate(旋转)和Scale(缩放)等基本动画。这些动画作用于视图对象,但并不真正改变视图的状态,只是视觉上的欺骗。 ...