我正在尝试实现 Activity 转换,但我看不到效果。这是我的第一个 Activity 的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_architecture);
setUpWindowAnimations();
}
private void setUpWindowAnimations() {
if (android.os.Build.VERSION.SDK_INT >= 21) {
Log.i("ANIM", "Fade called");
Fade fade = new Fade(2);
fade.setDuration(3000);
getWindow().setExitTransition(fade);
}
}
这是第二个 Activity 的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_image);
setUpWindowAnimations();
}
private void setUpWindowAnimations() {
if (android.os.Build.VERSION.SDK_INT >= 21) {
Log.i("ANIM", "slide called");
Slide slide = new Slide(Gravity.LEFT);
slide.setDuration(3000);
getWindow().setEnterTransition(slide);
}
}
即使我设置了淡出动画,也没有淡出,而且幻灯片以默认方式工作,即方向是 BOTTOM 而不是 LEFT。
Here是我的 values/style.xml
和 here是我的 v21/styles.xml
。
这是我的 AndroidManifest.xml
:
<application
android:name=".MyApplication"
android:allowBackup="true"
android:hardwareAccelerated="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:largeHeap="true"
android:theme="@style/AppTheme">
为什么这些转换不起作用以及如何使它们起作用。我用了paste.ubuntu.com因为 SO 编辑器没有正确显示 xml。
最佳答案
Bundle bundle = ActivityOptions.makeSceneTransitionAnimation(this).toBundle();
this.startActivity(intent,bundle);
在两个 Activity 之间设置好 Intent 后添加这两行, 这会起作用。
你不能仅仅通过 startActivity(intent)
方法开始一个 Activity ,
您需要使用 bundle 指定跨 Activity 的转换。
关于android - Activity 转换不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35064342/