向上导航上的自定义动画

时间:2014-08-06 13:17:09

标签: android animation

当我实例化一个新的Activity时,使用这样的自定义动画:

Intent registerIntent = new Intent();
registerIntent.setClassName(getPackageName(), getPackageName() + ".activity.RegisterActivity");
startActivity(registerIntent);
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);

这样,当前/旧活动向左滑动,而新活动从右侧滑入。

在新的RegisterActivity中,当用户使用“后退”按钮时,我使用以下代码来处理动画:

public void onBackPressed() {
    super.onBackPressed();
    overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right);
}

现在当前活动向右移动,旧活动(从之前)从左侧返回。

我也尝试像这样处理“向上”导航,但没有结果:

public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == android.R.id.home) {
        overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right);
    }
    return super.onOptionsItemSelected(item);
}

如何在“向上”导航中使用自定义动画?关于如何更好地使用动画的任何建议?

编辑: slide_in_left.xml:

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

slide_out_right.xml:

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

2 个答案:

答案 0 :(得分:1)

我更改了以下内容:现在可以了:

旧:

ActionBar actionBar = getSupportActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.blue)));
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeButtonEnabled(true);

新:

getActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.blue)));
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);

答案 1 :(得分:0)

如果我理解......我认为这是决心。

Intent registerIntent = new Intent();
registerIntent.setClassName(getPackageName(), getPackageName() + ".activity.RegisterActivity");
   startActivity(registerIntent);
   overridePendingTransition(
            R.anim.animation_in+right_to_left,
            R.anim.animation_out_right_to_left);

public void onBackPressed() {
   super.onBackPressed();
   overridePendingTransition(R.anim.animation_in_left_to_right,
                R.anim.animation_out_left_to_right);
 }

animation_in_left_to_right.xml

<?xml version="1.0" encoding="utf-8"?>

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

</set>

animation_out_left_to_right.xml

<?xml version="1.0" encoding="utf-8"?>

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

animation_in_right_to_left.xml

<?xml version="1.0" encoding="utf-8"?>

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

animation_out_right_to_left.xml

<?xml version="1.0" encoding="utf-8"?>

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

你对UP导航使用相同的逻辑