Android 启动和销毁时,动画在活动中无法正常工作

Android 启动和销毁时,动画在活动中无法正常工作,android,animation,android-activity,onstart,Android,Animation,Android Activity,Onstart,我的应用程序中有5到6个活动我在“活动开始”和“完成”活动中添加了从左到右和从右到左的动画,但当我单击“新建活动”时它不能正常工作它工作正常它从右到左开始但当我按“上一步”按钮时它也从右到左开始。但当我按下“硬件后退”按钮时,它会从左到右工作。这是我的密码 从右向左动画 leftin.xml <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXD

我的应用程序中有5到6个活动我在“活动开始”和“完成”活动中添加了从左到右和从右到左的动画,但当我单击“新建活动”时它不能正常工作它工作正常它从右到左开始但当我按“上一步”按钮时它也从右到左开始。但当我按下“硬件后退”按钮时,它会从左到右工作。这是我的密码 从右向左动画

leftin.xml

<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
    android:fromXDelta="100%p"
    android:toXDelta="0"
    android:duration="500"/>
这是我的后退按钮的代码

  btn_back.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent myint = new Intent(Sub_Category_Activity.this,Home.class);
            startActivity(myint);
            overridePendingTransition(R.anim.right_in, R.anim.right_out);
            finish();
        }
    });
这是我的onbackpress覆盖方法的代码

  @Override
public void onBackPressed() {
    super.onBackPressed();

    Intent myint = new Intent(Sub_Category_Activity.this,Home.class);
    startActivity(myint);
    overridePendingTransition(R.anim.right_in, R.anim.right_out);
    finish();
}

这里我面临的问题是,当我按下硬件后退按钮时,它工作正常,但当我按下UI的后退按钮时,它不是从左到右开始,而是从右到左开始新的活动形式(R.anim.right\u in,R.anim.right\u out)
完成()之后方法。

我认为您不需要在onCreate()中调用重写Transitions()方法

使用以下代码:

overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
右滑入xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >
    <translate android:duration="800" android:fromXDelta="100%" android:toXDelta="0%" />
    <alpha android:duration="800" android:fromAlpha="0.0" android:toAlpha="1.0" />
</set>

滑出左侧xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >
    <translate android:duration="800" android:fromXDelta="0%" android:toXDelta="-100%"/>
    <alpha android:duration="800" android:fromAlpha="1.0" android:toAlpha="0.0" />
</set>

嗨,下面是我如何制作这部动画的。我知道我的想法不是以专业的方式实现的,但最终我还是以自己的方式实现了。 这里是我有活动A,B,C,所以在活动B上,我检查它是从活动A还是C点击的,根据它,我使用了if条件,并以某种方式实现动画,如下面的代码所示

  @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test);
    pref = getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);
    editor = pref.edit();

    String fromhome =pref.getString("from_home_list_adapter","");
    if(fromhome.equals("yes"))
    {
        editor.putString("from_home_list_adapter","no");
        editor.commit();
        overridePendingTransition(R.anim.left_in, R.anim.left_out);
    }

我再说一遍,这不是处理动画的专业方法,但它的作品

尝试将<代码>覆盖转换(输入,输出)仅在暂停时使用。
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >
    <translate android:duration="800" android:fromXDelta="100%" android:toXDelta="0%" />
    <alpha android:duration="800" android:fromAlpha="0.0" android:toAlpha="1.0" />
</set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >
    <translate android:duration="800" android:fromXDelta="0%" android:toXDelta="-100%"/>
    <alpha android:duration="800" android:fromAlpha="1.0" android:toAlpha="0.0" />
</set>
  @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test);
    pref = getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);
    editor = pref.edit();

    String fromhome =pref.getString("from_home_list_adapter","");
    if(fromhome.equals("yes"))
    {
        editor.putString("from_home_list_adapter","no");
        editor.commit();
        overridePendingTransition(R.anim.left_in, R.anim.left_out);
    }