操作栏返回按钮的过渡效果

11

我已经为在按下返回按钮时更改活动时的动画创建了一个方法。

问题是ActionBar的向上按钮具有默认的过渡效果到上一个活动,我找不到一种方法来覆盖该动画并使用新的动画。

有什么想法吗?先谢谢了。

最好硬编码在Java中实现。

2个回答

26

只需获取“home back”事件。

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    if (item.getItemId() == android.R.id.home) {
        finish();
        overridePendingTransition(R.animator.anim_left, R.animator.anim_right);
        return true;
    }
    return false;
}

很遗憾,在我的设置中没有R.animator。有什么想法为什么? - Romuald Brunet
抱歉,R.animator是我添加的文件夹,anim_left和anim_right是我创建的动画,你可以在android.R中使用默认的Android动画。 - An-droid
挽救了我的生命,我浪费了好几天的时间来让过渡正常工作。 - Pei

4
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            onBackPressed();
            return true;

        default:
            return super.onOptionsItemSelected(item);
    }
}

@Override
public void onBackPressed() {
    this.finish();
    overridePendingTransition(R.anim.fade_in, R.anim.right_slide_out);
}

fade_in.xml (R.anim.fade_in)

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="300"
    android:fromAlpha="0.0"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:toAlpha="1.0" />

right_slide_out.xml (R.anim.right_slide_out)

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

这也是我所做的,但我希望有一种更有效的方式来同时处理返回按钮和主页按钮! - Micro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接