Activity切换动画overridePendingTransition

本文详细介绍了如何在Android应用中利用动画资源文件实现两个Activity之间的平滑过渡,包括跳转过程中的动画效果设置,以及如何在不同Activity间使用overridePendingTransition方法来定制动画体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:动画资源文件

trans_in.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="100%p"
    android:toXDelta="0"
    android:fromYDelta="0"
    android:toYDelta="0"
    android:duration="500">
</translate>
trans_out.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="0"
    android:toXDelta="-100%p"
    android:fromYDelta="0"
    android:toYDelta="0"
    android:duration="500">

</translate>
trans_pre_in.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="-100%p"
    android:toXDelta="0"
    android:fromYDelta="0"
    android:toYDelta="0"
    android:duration="500">
</translate>
trans_pre_out.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="0"
    android:toXDelta="100%p"
    android:fromYDelta="0"
    android:toYDelta="0"
    android:duration="500">

</translate>

二:Activity使用动画资源文件跳转

MainActivity.java
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    private Button btMain;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btMain = (Button) findViewById(R.id.bt_main);
        btMain.setOnClickListener(this);
    }
    private void jumpToSecond(View view){
        Intent animIntent = new Intent(MainActivity.this, SecondActivity.class);
        startActivity(animIntent);
        //该方法必须在startActivity()或finish()之后调用
        //第一个参数是待打开的Activity的动画,第二个参数是当前activity的动画
        //要想在activity切换时当前activity无动画,只需修改trans_out使其x轴和y轴均不移动即可
        overridePendingTransition(R.anim.trans_in,R.anim.trans_out);
    }

    @Override
    public void onClick(View v) {
        if(v.getId() == R.id.bt_main){
            jumpToSecond(v);
        }
    }
}
SecondActivity.java
public class SecondActivity extends AppCompatActivity implements View.OnClickListener{
    private Button btSecond;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        btSecond = (Button) findViewById(R.id.bt_second);
        btSecond.setOnClickListener(this);
    }
    private void jumpToFirst(View view){
        Intent intent = new Intent(SecondActivity.this,MainActivity.class);
        startActivity(intent);
        finish();
        //该方法必须在startActivity()或finish()之后调用
        overridePendingTransition(R.anim.trans_pre_in,R.anim.trans_pre_out);
    }

    @Override
    public void onClick(View v) {
        if(v.getId() == R.id.bt_second){
            jumpToFirst(v);
        }
    }
}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值