Android基础:Activity转场动画:overridePendingTransition(...)

XML创建补间动画

translate

有4个Activity,分别是ActivityAActivityB  ActivityC    ActivityD,

从C-D之间是不加动画的效果,我们可以看到页面是瞬间完成,覆盖掉当前的页面。

从A-B-C这之间是使用了平移动画,我们可以看到页面是缓慢的移动(时间设为500MS),最后覆盖掉当前的页面。

效果图:

加动画   无动画


步骤:

1 创建4个activity,4个layout,

2 在res目录下创建aim目录,放动画xml

分4种:  当前页向左移动  ,当前页向右移动,左边页向右移动,右边页向左移动。

        对应4种动画:self_to_left.xml  self_to_right.xml   left_other_to_right.xml    right_other_to_left.xml

self_to_left.xml:

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="0"
    android:toXDelta="-100%"
    android:duration="500" >
</translate>
<!-- 要使用%,这样才有效果,反则没有效果,500ms不起作用 -->

self_to_right.xml :

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="0"
    android:toXDelta="100%"
    android:duration="500" >
</translate>
<!-- 要使用%,这样才有效果,反则没有效果,500ms不起作用 -->

 left_other_to_right.xml: 

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="-100%"
    android:toXDelta="0"
    android:duration="500" >
</translate>
<!-- 要使用%,这样才有效果,反则没有效果,500ms不起作用 -->

right_other_to_left.xml:

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="100%"
    android:toXDelta="0"
    android:duration="500" >
</translate>
<!-- 要使用%,这样才有效果,反则没有效果,500ms不起作用 -->
ActivityA.java 从A到B

public class ActivityA extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_a);
        
        Button btn1 = (Button) findViewById(R.id.btn1);
        btn1.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				Intent intent = new Intent(ActivityA.this, ActivityB.class);
				startActivity(intent);
				finish();
				//enterAnim进入动画              exitAnim退出动画,确保动画的完成
				overridePendingTransition(R.anim.right_other_to_left, R.anim.self_to_left);
			}
		});
    }
}

ActivityB.java 从B到C,从B到A.

public class ActivityB extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_b);
        
        Button btn1 = (Button) findViewById(R.id.btn1);
        btn1.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				Intent intent = new Intent(ActivityB.this, ActivityA.class);
				startActivity(intent);
				finish();
				//enterAnim进入动画              exitAnim退出动画
				overridePendingTransition(R.anim.left_other_to_right, R.anim.self_to_right);
			}
		});
        
        Button btn2 = (Button) findViewById(R.id.btn2);
        btn2.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				Intent intent = new Intent(ActivityB.this, ActivityC.class);
				startActivity(intent);
				finish();
				//enterAnim进入动画              exitAnim退出动画
				overridePendingTransition(R.anim.right_other_to_left, R.anim.self_to_left);
			}
		});
    }   
}

ActivityC.java 从C到B(有动画), 从C到D(无动画).

public class ActivityC extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_c);

		Button btn1 = (Button) findViewById(R.id.btn1);
		btn1.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				Intent intent = new Intent(ActivityC.this, ActivityB.class);
				startActivity(intent);
				finish();
				// enterAnim进入动画 exitAnim退出动画
				overridePendingTransition(R.anim.left_other_to_right,R.anim.self_to_right);
			}
		});
		
		//正常启动
		 Button btn2 = (Button) findViewById(R.id.btn2);
	        btn2.setOnClickListener(new OnClickListener() {
				
				@Override
				public void onClick(View v) {
					Intent intent = new Intent(ActivityC.this, ActivityD.class);
					startActivity(intent);
					finish();
				}
			});
	}
}
ActivityD.java 从D到C(无动画)

public class ActivityD extends Activity {
	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_d);
        
        Button btn1 = (Button) findViewById(R.id.btn1);
        btn1.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				Intent intent = new Intent(ActivityD.this, ActivityC.class);
				startActivity(intent);
				finish();
			}
		});
    }
}

Demo:http://download.csdn.net/detail/ss1168805219/9498731



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值