我试图在我的应用中加入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);
使用所需的动画启动选项卡,但使用默认活动动画完成。有什么想法吗?
答案 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
时,才让它适用于退出动画。因此,请确保在打开自定义标签的位置传递活动的上下文。