EXIT_ANIMATION_BUNDLE无法使用Chrome自定义标签

时间:2015-09-03 08:56:51

标签: android chrome-custom-tabs

我试图在我的应用中加入Chrome自定义标签,但我很难让退出动画正常工作。我按照这里找到的文件:
Link

我使用的代码如下:

String EXTRA_CUSTOM_TABS_EXIT_ANIMATION_BUNDLE = "android.support.customtabs.extra.EXIT_ANIMATION_BUNDLE";
Bundle finishBundle = ActivityOptions.makeCustomAnimation(mActivity, android.R.anim.slide_in_left, android.R.anim.slide_out_right).toBundle();
i.putExtra(EXTRA_CUSTOM_TABS_EXIT_ANIMATION_BUNDLE, finishBundle);

Bundle startBundle = ActivityOptions.makeCustomAnimation(mActivity, R.anim.slide_in_right, R.anim.slide_out_left).toBundle();
mActivity.startActivity(i, startBundle);

使用所需的动画启动选项卡,但使用默认活动动画完成。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

将您的应用与自定义标签集成的推荐方法是使用Android Support Library

要使用它,请将com.android.support:customtabs:23.0.0作为编译依赖项添加到build.gradle。

然后,要设置退出动画并启动自定义选项卡,请执行以下操作:

    CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder()
            .setExitAnimations(this,
                    android.R.anim.slide_in_left, android.R.anim.slide_out_right)
            .build();
    customTabsIntent.launchUrl(this, Uri.parse("http://www.example.com"));

检查GitHub sample中的演示模块,详细了解如何在Android支持库中使用它。

要在没有支持库的情况下打开它,您必须确保将会话设置为额外。下面的代码将打开一个自定义选项卡并正确设置退出动画。

public static final String EXTRA_EXIT_ANIMATION_BUNDLE =
        "android.support.customtabs.extra.EXIT_ANIMATION_BUNDLE";

public static final String EXTRA_SESSION = "android.support.customtabs.extra.SESSION";

public void openCustomTab() {
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.example.com"));

    Bundle bundle = ActivityOptions
            .makeCustomAnimation(
                    this, android.R.anim.slide_in_left, android.R.anim.slide_out_right)
            .toBundle();

    Bundle extrasBundle = new Bundle();
    extrasBundle.putBinder(EXTRA_SESSION, null);
    intent.putExtras(extrasBundle);

    intent.putExtra(EXTRA_EXIT_ANIMATION_BUNDLE, bundle);
    startActivity(intent);
}

希望有所帮助。

答案 1 :(得分:0)

我偶然发现了一个相同的问题,输入动画就像一个咒语一样工作,但是直到我意识到我可能将错误的context传递给setExitAnimations时,才让它适用于退出动画。因此,请确保在打开自定义标签的位置传递活动的上下文。