Android:Activity切换动画、overridePendingTransition、fragment动画

简介:

1.跟overridePendingTransition(enterAnim, exitAnim)这个方法有关,可以设置出入的动画。

1
2
3
4
5
6
7
8
9
10
findViewById(R.id.button2).setOnClickListener( new  OnClickListener()
{
     @Override
     public  void  onClick(View v)
     {
         Intent intent =  new  Intent(OneActivity. this , TwoActivity. class );
         startActivity(intent );
         overridePendingTransition( 0 0 ); //去掉Activity切换间的动画
     }
});


代码设置动画:

启动后

1
2
startActivity( new  Intent(A. this , B. class ));
overridePendingTransition(inAnim, outAnim);


结束时

1
2
finish();
activity.overridePendingTransition(inAnim, outAnim);






2.通过style设置全局的activity动画

主题style:

1
2
3
<style name= "Theme.Test"  parent= "@android:style/Theme.Light.NoTitleBar" >
     <item name= "android:windowAnimationStyle" > @style /Animation.Activity.Test</item>
</style>



动画style:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<style name= "Animation.Activity.Test"  parent= "@android:style/Animation.Activity" >
     <item name= "android:activityOpenEnterAnimation" > @anim /activity_open_enter</item>
     <item name= "android:activityOpenExitAnimation" > @anim /activity_open_exit</item>
     <item name= "android:activityCloseEnterAnimation" > @anim /activity_close_enter</item>
     <item name= "android:activityCloseExitAnimation" > @anim /activity_close_exit</item>
           
     <item name= "android:taskOpenEnterAnimation" > @anim /activity_open_enter</item>
     <item name= "android:taskOpenExitAnimation" > @anim /activity_open_exit</item>
     <item name= "android:taskCloseEnterAnimation" > @anim /activity_close_enter</item>
     <item name= "android:taskCloseExitAnimation" > @anim /activity_close_exit</item>
           
     <item name= "android:taskToFrontEnterAnimation" > @anim /activity_open_enter</item>
     <item name= "android:taskToFrontExitAnimation" > @anim /activity_open_exit</item>
     <item name= "android:taskToBackEnterAnimation" > @anim /activity_close_enter</item>
     <item name= "android:taskToBackExitAnimation" > @anim /activity_close_exit</item>
</style>





2.fragment动画

Fragment过度动画分析

Sliding Fragment

介绍:该案例为传统的Fragment增加了个性化的补间动画,其效果是原有fragment向屏幕内做一定的下沉,新的fragment显示在最上层,产生层叠效果的多个fragments。
Video: http://www.youtube.com/watch?v=xbl5cxfA1n4

Source:http://developer.android.com/shareables/devbytes/SlidingFragments.zip

wKioL1P0Vp_SK8TDAAU7OLBt1Gw163.jpgwKiom1P0a4ywN2PcAATGDEZXGNs525.jpg


本文将简单分析其实现流程及原理
Step1:添加Fragment并设置点击的切换事件
首先添加一个fragment,并设置显示内容已做区别,案例中显示了一张图片,接着设置单击事件,为了使得我们单击任意位置都能触发fragment的切换动画,这
里需要为用于展示图片的fragment,显示文本的fragment以及黑色背景view都添加该事件监听器。

Step2:fragment切换实现
这里只有2个fragment,一个是用于显示图片,另一个显示文本,预期效果是单击屏幕后,图片下沉,文本显示到顶层,再次单击后则恢复原状,即,文本消失>,图片上浮。
分析这些动画的顺序和效果,图片的下沉可以通过一个组合animation来做,1.缩放,例如缩小为原图80%,2.旋转,这里的下层效果是首先图片x轴旋转40度,>然后再将旋转角度设置为0,3.添加一个半透明的遮罩,以示图片当前出于幕后状态,


文本的出现则在图片的动作完成后,通过manager动态讲其添加到画面上,这里的文本不是全屏的,否则就看不到后面的图片背景,文本的出现也可以添加动画>,这里文本出现时由下至上,消失时由上至下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
private  void  switchFragments () {
         if  (mIsAnimating) {
             return ;
         }
         mIsAnimating =  true ;
         if  (mDidSlideOut) {
             mDidSlideOut =  false ;
             getFragmentManager().popBackStack();
         else  {
             mDidSlideOut =  true ;
  
             AnimatorListener listener =  new  AnimatorListenerAdapter() {
                 @Override
                 public  void  onAnimationEnd(Animator arg0) {
                     FragmentTransaction transaction = getFragmentManager().beginTransaction();
                     transaction.setCustomAnimations(R.animator.slide_fragment_in,  0 0 ,
                             R.animator.slide_fragment_out);
                     transaction.add(R.id.move_to_back_container, mTextFragment);
                     transaction.addToBackStack( null );
                     transaction.commit();
                 }
             };
             slideBack (listener);
         }
     }




本文转自 glblong 51CTO博客,原文链接:http://blog.51cto.com/glblong/1226248,如需转载请自行联系原作者

目录
相关文章
|
3月前
|
Android开发 开发者
Android UI设计: 请解释Activity的Theme是什么,如何更改应用程序的主题?
Android UI设计: 请解释Activity的Theme是什么,如何更改应用程序的主题?
44 1
|
3月前
|
数据库 Android开发 开发者
Android基础知识:请解释Activity的生命周期。
Android基础知识:请解释Activity的生命周期。
45 2
|
23天前
|
Java Android开发
Android开发之使用OpenGL实现翻书动画
本文讲述了如何使用OpenGL实现更平滑、逼真的电子书翻页动画,以解决传统贝塞尔曲线方法存在的卡顿和阴影问题。作者分享了一个改造后的外国代码示例,提供了从前往后和从后往前的翻页效果动图。文章附带了`GlTurnActivity`的Java代码片段,展示如何加载和显示书籍图片。完整工程代码可在作者的GitHub找到:https://github.com/aqi00/note/tree/master/ExmOpenGL。
26 1
Android开发之使用OpenGL实现翻书动画
|
2月前
|
Android开发
[Android 四大组件] --- Activity
[Android 四大组件] --- Activity
22 1
|
3月前
|
Android开发
Android基础知识:什么是Fragment?与Activity的区别是什么?
Android基础知识:什么是Fragment?与Activity的区别是什么?
298 54
|
3月前
|
XML 开发工具 Android开发
Android动画效果-更新中
Android动画效果-更新中
59 1
|
4月前
|
XML Android开发 数据格式
[Android]动画
[Android]动画
33 0
|
4月前
|
API Android开发 开发者
【Android App】Vulkan实现宇宙中旋转雷达动画效果(附源码和原始视频 超详细必看)
【Android App】Vulkan实现宇宙中旋转雷达动画效果(附源码和原始视频 超详细必看)
69 1
|
9月前
|
Android开发
Android中下拉通知栏,Activity会走哪些生命周期?
我们就可以做一个总结:当前Activity中,下拉通知栏,是不走任何生命周期的。
152 0
|
Java Android开发
移动应用程序设计基础——Android环境构建与Activity生命周期
安装智能手机开发相关软件平台,并在此基础上测试Activity的生命周期过程。 5、 完成智能手机开发平台安装、以及相关配置; 6、 并实现Hello World; 7、 添加Log日志,通过Log日志验证Ac 1、 安装JAVA JDK 2、 安装Android Studio,熟悉AS的基本操作,改变AS的字体,显示方式;截图和文字说明。 3、 建立新项目,实现Hello World。说明各个文件的作用,以及各个关键语句的作用或含义,给出程序的运行结果。 4、 设置生命周期的Log日志,分别执行相关操作
235 0
移动应用程序设计基础——Android环境构建与Activity生命周期