Android Activity的切换动画(overridePendingTransition)

摘要:
Android有几个内置的动画效果。请参见android.R.anim类。使用overridePendingTransition时,可能不会生成动画效果。解决方案如下:1.Android系统版本低于2.0。没有办法做到这一点。想想另一种方法来解决切换动画的问题。

overridePendingTransition

1.平时Activity的切换是就是从中间弹出来,然后遮盖住之前的Activity。这种效果看到很多后就想给他换成其他的效果,如:

要显示的Acitvity从左边往右的平移进入,被遮盖的Activity从左往右的平移划出。

在Android开发过程中,经常会碰到Activity之间的切换效果的问题,下面介绍一下如何实现左右滑动的切换效果,首先了解一下Activity切换的实现,从Android2.0开始在Activity增加了一个方法:

public void overridePendingTransition (int enterAnim, int exitAnim)

其中:

enterAnim 定义Activity进入屏幕时的动画(要显示的Activity进入时的动画)

exitAnim 定义Activity退出屏幕时的动画(被遮盖住的Activity划出时的动画)

overridePendingTransition 方法必须在startActivity()或者 finish()方法的后面。

Android已经内置了几种动画效果,可以见 android.R.anim 类。一般情况下我们需要自己定义屏幕切换的效果。首先我们先了解Activity的位置定义,如下图:

Android Activity的切换动画(overridePendingTransition)第1张

从上图可以看出,以手机屏幕下面边未X轴,屏幕左边为Y轴,当Activity在X轴值为-100%p时,刚好在屏幕的左边(位置1),当X轴值为0%p时,刚好再屏幕内(位置2),当X=100%p时刚好在屏幕右边(位置3)。

在用overridePendingTransition可能会遇到动画效果不产生,解决办法如下:

 1、android系统版本2.0以下,这个没办法,想其他办法解决切换动画吧。
 2、在ActivityGroup等的嵌入式Activity中,这个比较容易解决,用如下方法就可以了:
    this.getParent().overridePendingTransition 就可以解决。
 3、在一个Activity的内部类中,或者匿名类中,这时候只好用handler来解决了。

 4、手机的显示动画效果被人为或者其他方式给关闭了 现在打开即可 设置->显示->显示动画效果

2.直接上代码

要显示的Activity进入时的动画:

1 <?xml version="1.0" encoding="utf-8"?>
2 <set xmlns:android="http://schemas.android.com/apk/res/android" >
3     <translate
4         android:duration="300"
5         android:fromXDelta="-100%"
6         android:toXDelta="0%p" />
7 
8 </set>

要被遮盖住的Activity滑出时的动画:

1 <?xml version="1.0" encoding="utf-8"?>
2 <set xmlns:android="http://schemas.android.com/apk/res/android" >
3     <translate
4         android:duration="300"
5         android:fromXDelta="0%"
6         android:toXDelta="100%p" />
7 
8 </set>

MainActivity:

 1 public class MainActivity extends Activity {
 2 
 3     private Button btn;
 4 
 5     @Override
 6     protected void onCreate(Bundle savedInstanceState) {
 7         super.onCreate(savedInstanceState);
 8         setContentView(R.layout.activity_main);
 9         btn = (Button) findViewById(R.id.btn);
10         btn.setOnClickListener(new OnClickListener() {
11 
12             @Override
13             public void onClick(View v) {
14                 Intent i = new Intent();
15                 i.setClass(MainActivity.this, SecondActivity.class);
16                 startActivity(i);
17                 overridePendingTransition(R.anim.in_from_right, R.anim.out_left);
18             }
19         });
20     }
21 
22 }

还有的Activity就没什么实质性的东西了,就不贴出来了。

效果如下:

效果图如下:

 

Android Activity的切换动画(overridePendingTransition)第2张     Android Activity的切换动画(overridePendingTransition)第3张源码下载

 

 

免责声明:文章转载自《Android Activity的切换动画(overridePendingTransition)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Phalcon下命令行应用(command line applications)ewebeditor 上传大内容文本注意点下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Android 虚拟现实(virtual reality)入门指南

入门指南 本文档介绍怎样使用实验性的 Cardboard SDK for Android 创建您自己的虚拟实境 (VR) 体验。 Android 演示版应用:Treasure Hunt 本教程中的代码演示样例摘自“Treasure Hunt”Android 演示版应用。 Cardboard 是一个简单的设备。可让智能手机发挥虚拟实境平台的威力。 Card...

WPF动画速率效果

在WPF中使用动画的情况非常多,而要让动画变得生动往往要使用一些变速动画,WPF也内置了很方便的缓动函数来实现这一功能。 除此之外,WPF还有关键帧动画,利用关键帧动画能够很好的控制动画的细节,与美工的很多设计保持完美一致。关键帧动画中还有一套叫做样条关键帧动画(SplineKeyFrame),这个动画利用一个三次贝塞尔曲线能够更准确的控制动画的速率。 不...

【转载】Android属性动画和视图动画的区别

提起动画首先想到的是动画片,童年最爱的黑猫警长,葫芦娃,邋遢大王,大脸猫和蓝皮鼠,四驱兄弟,七龙珠等等,当时觉着好神奇,他们是怎么动的呢。动画其实就是一帧帧的画面顺序播放,只要画面切换的够快,会我们眼中形成视觉残留的效果,人眼不会感觉到突兀也就会认为画面是连续运动的,至于24帧什么的这里就不说了,现在的手机普遍支持60帧每秒,微鲸的vr设备好像87帧每秒...

CSS动画总结效果

   CSS3添加了几个动画效果的属性,通过设置这些属性,可以做出一些简单的动画效果而不需要再去借助JavaScript。CSS3动画的属性主要分为三类:transform、transition以及animation。   transform rotate 设置元素顺时针旋转的角度,用法是: transform: rotate(x); 参数x必须是以...

一些炫酷的css效果

前言 本文是笔者写CSS时常用的套路。不论效果再怎么华丽,万变不离其宗。 之前发的CSS技巧大部分都是依照本文的套路来写的 有人问我为什么我能想出这么多的动画?笔者阅番百部,对常用的动画技巧了如指掌,同样那些酷炫的网站只要细心观察,也会给笔者带来很多设计上的灵感。 一言以蔽之:只有多欣赏动画,才能写出好的动画。 小提示:本文会不定期更新哦!每打开一次可...

android基本架构

Android其本质就是在标准的Linux系统上增加了Java虚拟机Dalvik,并在Dalvik虚拟机上搭建了一个JAVA的application framework,所有的应用程序都是基于JAVA的application framework之上。Android主要应用于ARM平台,但不仅限于ARM,通过编译控制,在X86、MAC等体系结构的机器上同样可...