一般启动一个新的Activity都默认有切换的动画效果,比如界面从右至左的移动。

但是有些时候我们不需要这个动画,怎么办?

操作方法比较麻烦,这里我推荐其中一种。我这里是要做启动页splash到首页Home无缝展示,即启动页的图片背景和首页最上层的悬浮背景图是一模一样,用户会以为还在启动页,我这里会做些动画,然后进行开门效果。(首页会多出2个按钮,此时就不是启动页了)

主要实现思路:

1、需要设置无动画效果的主题,应用到对应的界面。

2、在启动页面界面结束时,需要增加一个方法 overridePendingTransition(0, 0);

在SplashActivity.this.finish();之前。

3、gif中启动页面和首页都是同一个图片(首页布局上面悬浮了启动页的图片,利用window的decorview)

4、在style.xml里,需要加入下面主题,其中parent=”AppTheme”中的父主题是你应用自身的主题,name=”Theme”的theme是即将需要使用的。接下来在首页的Android:theme=”@style/Theme”设置到你的首页(即你启动页跳转的下一级页面)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!-- 取消界面转场动画使用-->
   <style name= "Theme" parent= "AppTheme" >
     <item name= "android:windowAnimationStyle" > @style /Animation</item>
   </style>
   <style name= "Animation" >
     <item name= "android:activityOpenEnterAnimation" > @null </item>
     <item name= "android:activityOpenExitAnimation" > @null </item>
     <item name= "android:activityCloseEnterAnimation" > @null </item>
     <item name= "android:activityCloseExitAnimation" > @null </item>
     <item name= "android:taskOpenEnterAnimation" > @null </item>
     <item name= "android:taskOpenExitAnimation" > @null </item>
     <item name= "android:taskCloseEnterAnimation" > @null </item>
     <item name= "android:taskCloseExitAnimation" > @null </item>
     <item name= "android:taskToFrontEnterAnimation" > @null </item>
     <item name= "android:taskToFrontExitAnimation" > @null </item>
     <item name= "android:taskToBackEnterAnimation" > @null </item>
     <item name= "android:taskToBackExitAnimation" > @null </item>
   </style>

5、如果需要实现gif中效果,防止启动页的图片可能延伸到状态栏,我这边加了占位布局(高度为动态获取的系统状态栏高度,代码是在启动页获取高度)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@Override
   public void onWindowFocusChanged( boolean hasFocus) {
     super .onWindowFocusChanged(hasFocus);
     int statusBarHeight = getStatusBarHeight();
     PreferencesUtil.putInt( this , PreferenceKey.SETTING, PreferenceKey.STATUS_BAR_HEIGHT,
         statusBarHeight);
     LogUtil.e(statusBarHeight + "" );
   }
 
   public int getStatusBarHeight() {
     int result = 0 ;
     int resourceId = getResources().getIdentifier( "status_bar_height" , "dimen" , "android" );
     if (resourceId > 0 ) {
       result = getResources().getDimensionPixelSize(resourceId);
     }
     return result;
   }

以上就是小编为大家带来的Activity取消界面切换的默认动画方法(推荐)全部内容了,希望大家多多支持脚本之家~