Acitivity进入退出动画效果的两种实现

以前做项目的时候一直没有注意过activity切换动画的问题,一方面因为没有人要求,一方面因为自己还没能静下心来好好学习。现在把这个问题弄清楚了,拿出来分享下。自己也做个总结。

我这里说的两种实现一种是通过调用overridePendingTransition方式指定将要打开的activity的动画和当前activity的退出动画;另一种是我昨天在做dialog进入退出时提出的想法,通过style来指定某个activity的进入退出的动画效果。

先说第一种实现方式:

overridePendingTransition方法的作用就是指定将要打开的Activity的动画和当前Activity的退出动画

谷歌官网上说,该方法应该在调用startActivity()或者finish()之后立即调用

overridePendingTransition方法的第一个参数enterAnim是指进入Activity的动画,第二个参数exitAnim是指当前Activity的退出动画,比如说我代码这么写:

[java] view plaincopy

  1. Intent i = new Intent(MainActivity.this, MainActivity2.class);

  2. startActivity(i);

  3. overridePendingTransition(R.anim.enter, R.anim.exit);

我的MainActivity会执行R.anim.exit动画,被打开的MainActivity2会执行R.anim.enter动画。

finish的时候调用:

[java] view plaincopy

  1. this.finish();

  2. overridePendingTransition(R.anim.enter, R.anim.exit);

我是在刚刚打开的MainActivity2里面执行的这段代码,所以MainAcivity2会执行R.anim.exit动画,而MainActivity将重新获得焦点显示出来,将执行R.anim.enter动画。

因为以前对overridePendingTransition实现进入退出动画一直处于混乱状态,所以第一种方法啰嗦的多了点。

R.anim.enter(从左侧进入)

[html] view plaincopy

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

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

  3. <translate

  4. android:duration="2000"

  5. android:fromXDelta="-100%p"

  6. android:toXDelta="0%p" />

  7. </set>

R.anim.exit(从右侧退出)

[html] view plaincopy

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

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

  3. <translate

  4. android:duration="2000"

  5. android:fromXDelta="0%p"

  6. android:toXDelta="100%p" />

  7. </set>

第二中发法实现Activity动画效果主要是通过style进行指定。

可以写一个如下的style

[html] view plaincopy

  1. <style name="mystyle" parent="android:Animation">

  2. <item name="@android:windowEnterAnimation">@anim/enter</item>

  3. <item name="@android:windowExitAnimation">@anim/exit</item>

  4. </style>

然后通过window.setWindowAnimations方法指定给当前的Activity,这样,当这个Activity进入退出的时候就会分别执行windowEnterAnimation和windowExitAnimation
Item指定的anim了。具体的enter和exit动画和上面的一样。

设置代码和设置dialog进入退出一样:

[java] view plaincopy

  1. getWindow().setWindowAnimations(R.style.mystyle);

另外还可以通过在配置文件中通过给Ativity指定thame来将动画效果设置给Activity

代码如下:

[html] view plaincopy

  1. <style name="AppTheme" parent="AppBaseTheme">

  2. <item name="android:windowAnimationStyle">@style/mystyle</item>

  3. </style>

  4. <style name="mystyle" parent="android:Animation">

  5. <item name="@android:windowEnterAnimation">@anim/enter</item>

  6. <item name="@android:windowExitAnimation">@anim/exit</item>

  7. </style>
  8. //配置文件中这么写的

  9. <activity

  10. android:name="com.example.activityanimdemo.MainActivity2"

  11. android:theme="@style/AppTheme" >

  12. </activity>

除了可以通过windowEnterAnimation和windowExitAnimation
Item指定进入退出动画效果,还可以通过以下Item来指定

[html] view plaincopy

  1. <item name="android:activityOpenEnterAnimation"></item>

  2. <item name="android:activityOpenExitAnimation"></item>

  3. <item name="android:activityCloseEnterAnimation"></item>

  4. <item name="android:activityCloseExitAnimation"></item>

另外,我试了下这同时用overridePendingTransition指定Activity的动画和用style指定Activity的动画,发现他们指定的动画会同时执行。

原文:http://blog.csdn.net/fcx520/article/details/13997275

Acitivity进入退出动画效果的两种实现,布布扣,bubuko.com

时间: 2024-08-06 04:32:39

Acitivity进入退出动画效果的两种实现的相关文章

android animation动画效果的两种实现方式

animation动画效果两种实现方式 注:此例为AlphaAnimation效果,至于其他效果,换一下对象即可. 1..java文件 代码控制 添加并且开始animation动画 //添加动画效果 AlphaAnimation animation = new AlphaAnimation(0.3f, 1.0f); //设置次效果的持续时间 animation.setDuration(2000); //设置动画的监听事件 animation.setAnimationListener(new An

Android动画Animation的两种加载执行方式

本文以简单的AlphaAnimation("淡入淡出(透明度改变)"动画)为例,简单的说明Android动画Animation的两种加载执行方法: (1) 直接写Java代码,制作Android动画. (2) 写XML配置文件,加载XML资源文件执行. 其实这两者是一致的.要知道,在Android中,凡是可以在XML文件完成的View,代码亦可完全写出来. 现在先给出一个Java代码完成的动画AlphaAnimation,AlphaAnimation功能简单,简言之,可以让一个View

Android 文字自动滚动(跑马灯)效果的两种实现方法[特别好使]

有时候在xml中写的跑马灯效果不滚动:原因有以下 Android系统中TextView实现跑马灯效果,必须具备以下几个条件: 1.android:ellipsize=”marquee” 2.TextView必须单行显示,即内容必须超出TextView大小 3.TextView要获得焦点才能滚动(如果还不行,就要用自定义的TextView控件中重写isFocused()返回true就行[方法代码在下面的AlwaysMarqueeTextView 类],但是遇到新问题就是界面有多个这样的控件显示时当

前端页面a标签嵌套a标签效果的两种解决方案

这是由工作中的一个小改动需求得到的这个解决方案的:那个需求是这样的,如图: 需求原来是球队名字没有点击功能的,而蓝色方框两队之间的比赛点击的时候会跳转到比赛文字直播页面.现在需要要求点击球队名字要跳转到球队资料库页面. 这样就会产生了a标签的嵌套. 但是总所周知a标签是内联元素(inline element),如果嵌套a标签的话浏览器则会解析成: 1 <!-- a标签进行嵌套的时候 --> 2 <a href="#outer">outerA 3 <a hr

AngularJS中实现显示或隐藏动画效果的3种方式

本篇体验在AngularJS中实现在"显示/隐藏"这2种状态切换间添加动画效果. 通过CSS方式实现显示/隐藏动画效果 思路: →npm install angular-animage→依赖:var app = angular.module("app",["ngAnimate"]);→controller中一个变量接收bool值→界面中提供一个按钮,点击改变bool值→界面中显示/隐藏的区域提供ng-if和controller中的bool值绑定

实现【打字机动画】的两种办法

打字机动画是一个很常见的动画效果,实现的方式也有很多 最近在项目中刚好遇到了类似的需求,整理了几个实现动画的方法,分享一下~ 方法一. 效果最好的打字机动画 通过 js 的定时器增减文字,单独用一个标签来写光标动画,这样即使文字换行也能良好呈现 HTML <div class="typing"> <span class="typing-text">这是一个传说中的打字动画</span> <i class="care

AnimateWindow 函数 程序退出动画效果

语法:function AnimateWindow(hWnd: HWND; dwTime: DWord; dwFlags: DWORD): BOOL; 参数:hWnd 窗口句柄 DWord 动画时间(毫秒级)一般大于200 dwFlags 显示方式,一般有下面标志: AW_SLIDE:使用滑动类型.缺省则为滚动动画类型.当使用AW_CENTER标志时,这个标志就被忽略.  AW_ACTIVATE:激活窗口.在使用了AW_HIDE标志后不要使用这个标志. AW_BLEND:使用淡出效果.只有当hW

点击键盘的回弹效果的两种方法

1 //当点击键盘return键的时候 2 - (BOOL)textFieldShouldReturn:(UITextField *)textField 3 { 4 [textField resignFirstResponder]; // 释放第一响应者 5 NSLog(@"%@",textField.text); 6 return YES; 7 } 1 // 触摸屏幕回收键盘 2 - (void)touchesEnded:(NSSet<UITouch *> *)touch

Android------Button 添加声音效果(两种方式)

我在先前的案例<Android 的底部导航栏 BottomNavigationBar>中添加以底部 的4个按钮切换添加声音 下来看看案例效果图 使用添加依赖 compile 'com.ashokvarma.android:bottom-navigation-bar:1.3.0' 方式1: private void PlayMusic(int MusicId) { music = MediaPlayer.create(this, MusicId); music.start(); } 方式2: @