您的位置:首页 > 其它

Activity和Frament转场动画

2017-06-25 18:26 218 查看
Activity转场动画的实现方式

overridePendingTransition(int enterAnim ,int exitAnim )

overridePendingTransition方法需要在startAtivity方法或者是finish方法调用之后立即执行

参数enterAnim表示的是从Activity a跳转到Activity b,进入b时的动画效果

参数exitAnim表示的是从Activity a跳转到Activity b,离开a时的动过效果

若进入b或者是离开a时不需要动画效果,则可以传值为0(如果出现activity黑色背景,则定义一个空的动画进行加载)

使用style的方式定义Activity的切换动画

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="Android:windowAnimationStyle">@style/activityAnim</item>


<style name="activityAnim">
<item name="Android:activityOpenEnterAnimation">@anim/slide_in_top</item>
<item name="Android:activityOpenExitAnimation">@anim/slide_in_top</item>


而在windowAnimationStyle中存在四种动画:

activityOpenEnterAnimation // 用于设置打开新的Activity并进入新的Activity展示的动画
activityOpenExitAnimation  // 用于设置打开新的Activity并销毁之前的Activity展示的动画
activityCloseEnterAnimation  // 用于设置关闭当前Activity进入上一个Activity展示的动画
activityCloseExitAnimation  // 用于设置关闭当前Activity时展示的动画


使用MD风格的ActivityOptions切换动画实现Activity跳转动画(兼容包ActivityOptionsCompat)

Intent intent = new Intent(MainActivity.this, ThreeActivity.class);
startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(MainActivity.this).toBundle());


Fragment转场动画的实现

标准转场动画

通过FragmentTransition给Fragment指定标准的转场动画,通过setTransition(int transit)方法

该方法可传入的三个参数是:

  TRANSIT_NONE,

  TRANSIT_FRAGMENT_OPEN,

  TRANSIT_FRAGMENT_CLOSE

  分别对应无动画、打开形式的动画和关闭形式的动画。

  标准动画设置好后,在Fragment添加和移除的时候都会有。

自定义转场动画

  自定义转场动画是通过setCustomAnimations()方法,因为Fragment添加时可以指定加入到Back Stack中,所以转场动画有添加、移除、从Back stack中pop出来,还有进入四种情况。

注意setCustomAnimations()方法必须在add、remove、replace调用之前被设置,否则不起作用

使用v4包,Fragment的使用不再局限于API Level 11之上,低等级的API也可以使用,但是这时候转场动画的类型是View Animation。

动画资源放在res\anim\路径下,和Activity的转场动画一样。

Fragment中的方法:onCreateAnimation(int transit, boolean enter, int nextAnim)返回值Animation。

FragmentTransaction中的setCustomAnimations()方法,两参数类型和四参数类型都可用。

private void addFragment() {
if (null == mFragmentManager) {
mFragmentManager = getSupportFragmentManager();
}

mTextFragmentOne = new MyFragmentOne();
FragmentTransaction fragmentTransaction = mFragmentManager
.beginTransaction();
fragmentTransaction.setCustomAnimations(
R.anim.push_left_in,
R.anim.push_left_out,
R.anim.push_left_in,
R.anim.push_left_out);

fragmentTransaction.add(R.id.container, mTextFragmentOne);

fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}


摘自

Activity转场动画的五种实现方式

Fragment的转场动画
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  转场动画