Android Activity的切换动画(overridePendingTransition)

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的位置定义,如下图:

从上图可以看出,以手机屏幕下面边未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就没什么实质性的东西了,就不贴出来了。

效果如下:

效果图如下:

     源码下载

时间: 2024-10-24 07:18:43

Android Activity的切换动画(overridePendingTransition)的相关文章

Android Activity的切换动画

app中Activity之间跳转方式太单调有没有...想改变一下?那就自己写呗!!!!!! 实现Acitvity之间跳转的方式有两种. 一.在AndroidManifest中定义. 1.现在res/values/styles.xml中加上一个style,如下 ? 1 2 3 4 <style name="AppTheme"mce_bogus="1"parent=" @android :style/Theme.Light"> <i

Android Activity实现切换动画的两种方法

方法一 overridePendingTransition(0,0) void android.app.Activity.overridePendingTransition(int enterAnim, int exitAnim) Call immediately after one of the flavors of startActivity(Intent) or finish to specify an explicit transition animation to perform ne

Android Activity切换动画overridePendingTransition

Activity在切换或者是退出的时候能够使用渐入,滑动,缩放等动态效果.使用的就是方法overridePendingTransition,能够直在Activity其中直接调用. overridePendingTransition(R.anim.zoomin, R.anim.zoomout) 第一个參数是事实上动画,第二个參数是结束动画.此方法在startActivity()或者是finish()后调用,在切换或是退出时就会调用此动画. Intent phoneIntent=new Intent

Android的Activity屏幕切换动画(一)-左右滑动切换

这段时间一直在忙Android的项目,总算抽出点时间休息一下,准备把一些项目用到的Android经验分享一下. 在Android开发过程中,经常会碰到Activity之间的切换效果的问题,下面介绍一下如何实现左右滑动的切换效果,首先了解一下Activity切换的实现,从Android2.0开始在Activity增加了一个方法: public void overridePendingTransition (int enterAnim, int exitAnim) 其中: enterAnim 定义A

android动画-Activity之间切换动画

Android中页面之间动画切换可以使用两种方式,一种是代码,一种是定义修改Activity Theme. 一.代码实现相对来说比较简单 通过调用 overridePendingTransition() 可以实时修改Activity的切换动画. 但需注意的是:该函数必须在调用startActivity()或finishe后立即调用,且只有效一次. 二.Activity Theme 1. 在styles.xml中输入以下代码: <style name="AnimationActivity&q

Activity切换动画(overridePendingTransition)-翻页效果

Activity的切换动画指的是从一个activity跳转到另外一个activity时的动画.{它包括两个部分:一部分是第一个activity退出时的动画:另外一部分时第二个activity进入时的动画:在Android的2.0版本之后,有了一个函数来帮我们实现这个动画.这个函数就是YoverridePendingTransitionj这个函数有两个参数,一个参数是第一个activity退出时的动画,另外一个参数则是第二个activity进入时的动画. 这里需要特别说明的是,关于override

Android Activity界面切换添加动画特效

在Android 2.0之后有了overridePendingTransition() ,其中里面两个参数,一个是前一个activity的退出两一个activity的进入, Java代码   @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.SplashScreen); new Handler().postD

Activity 设置切换动画

extends://blog.csdn.net/luohaowang320/article/details/42124225 | http://blog.csdn.net/xuewater/article/details/36398803 最近写项目的时候需要用到大量的activity切换动画,于是就用了考虑到了theme中引用style来实现,但是竟然无效,很是郁闷,几经波折,找到了原因,原来是style里面设置了android:windowIsTranslucent这个属性,代码如下: <s

Activity设置切换动画时黑屏问题的解决

//当这么设置的时候,打开Acticity的时候会黑屏一下 overridePendingTransition(R.anim.activity_open,0); //改成如下代码 完美解决问题 //设置打开Activity时的动画 overridePendingTransition(R.anim.activity_open,R.anim.activity_stay); activity_open.xml <?xml version="1.0" encoding="utf