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

时间:2017-04-10 06:19:34

标签: android animation android-activity onstart

我在我的应用程序中有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"/>

leftout.xml

<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
    android:fromXDelta="0"
    android:toXDelta="-100%p"
    android:duration="500"/>

rightin.xml

<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
    android:fromXDelta="-100%p"
    android:toXDelta="0"
    android:duration="500"/>

rightout.xml

<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
    android:fromXDelta="0"
    android:toXDelta="100%p"
    android:duration="500"/>

这里是代码 oncreate 活动

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_sub__category);
    overridePendingTransition(R.anim.left_in, R.anim.left_out);
}

这是 my_back 按钮

的代码
  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按钮时它不是从左到右开始但是从右到左开始新的活动

4 个答案:

答案 0 :(得分:1)

使用此代码:

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>

答案 1 :(得分:0)

overridePendingTransition(R.anim.right_in,R.anim.right_out);  在 finish(); 方法之后。

答案 2 :(得分:0)

我认为你不需要在 onCreate()中调用 overridependingtransitions()方法。

答案 3 :(得分:0)

嗨,这是我如何实现这个动画。我知道我实现这一点的想法不是专业的方式,但最后我按照自己的方式实现了它。 这里是我有活动A,B,C等活动B我检查它是从活动A或C点击并根据我使用的条件和实现动画某种方式如下面的代码

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

我再次说这不是处理动画的专业方法,而是它的作品