切换默认Activity和Fragment的动画

Activity中

public void click(View view){
		Intent intent = new Intent();
		intent.setClass(this, TwoActivity.class);
		startActivity(intent);
		overridePendingTransition(R.anim.enter, R.anim.exit);  //第一个参数为第一个Activity离开时的动画,第二参数为所进入的Activity的动画效果,这个方法必须在 startActivity()之后 
	}
public void click(View view){
		Intent intent = new Intent();
		intent.setClass(this, TwoActivity.class);
		startActivity(intent);
		overridePendingTransition(R.anim.enter, R.anim.exit);//R.anim.exit  
		//第一个参数是进入第2个Activity(即第二个Activity)的动画,第二个参数是第一个Activity离开时候的动画(即第一个Activity的动画)
		//发现网上很多都是乱说,甚至不对,专门根据 旋转测试一下效果,发现这两个动画是同时执行的,且我们知道新启动的Activity是在最上面的,动画也是在最上面 
		//overridePendingTransition(0, R.anim.exit);//测试此句发现 没有任何动画效果,(其实有,只是我们看不到) ,0表示无动画,这段代码  this.finish()是可以看到的,注意动画 只显示 栈顶那个Activity   
		
	}


如果上面两个参数没有动画要设置,则用0作为参数。

Fragment中

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();
    }

例子:

4个 Fragment 慢慢滑动的效果

FragmentTransaction ft = getFragmentManager().beginTransaction();
//设置进入退出动画
// transaction.setCustomAnimations(R.anim.fragment_enter,R.anim.fragment_out); // A(fragment)-->B(fragment) enter是B的动画,out是A的动画

ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);

DetailsFragment newFragment = DetailsFragment.newInstance();

ft.replace(R.id.details_fragment_container, newFragment, "detailFragment");

// Start the animated transition.
ft.commit();

下面是anim目录下的动画

enter_from_left.xml

<translate 
      android:fromXDelta="-100%" android:toXDelta="0%"
      android:fromYDelta="0%" android:toYDelta="0%"
      android:duration="700"/>

enter_from_right.xml

<translate
     android:fromXDelta="100%" android:toXDelta="0%"
     android:fromYDelta="0%" android:toYDelta="0%"
     android:duration="700" />

enter_from_right.xml

<translate 
      android:fromXDelta="0%" android:toXDelta="-100%"
      android:fromYDelta="0%" android:toYDelta="0%"
      android:duration="700"/>

exit_to_right.xml

<translate
     android:fromXDelta="0%" android:toXDelta="100%"
     android:fromYDelta="0%" android:toYDelta="0%"
     android:duration="700" />
posted @ 2015-10-02 14:35  need88  阅读(1236)  评论(0编辑  收藏  举报