我有两个活动和它们之间的幻灯片转换。很简单。但是,无论出于何种原因,ActivityOptions.makeSceneTransitionAnimation(Activity)
似乎在堆栈上创建了一个空活动。或者更确切地说,它将我的原始活动保留在堆栈上,但是使根视图为空,因此它看起来像一个空白活动。
我正在使用最流行的方式从文档创建场景转换。我不太清楚为什么这是一个问题,除非它是一个已知的问题。还有其他人经历过吗?如果是这样,你修好了吗?
public void startSearchActivity(MenuItem view) {
Intent searchActivity = new Intent(this, SearchActivity.class);
ActivityOptions transitionActivityOptions = ActivityOptions.makeSceneTransitionAnimation(HomeActivity.this);
startActivity(searchActivity, transitionActivityOptions.toBundle());
}
private void setupWindowAnimations() {
Transition slide = new Slide();
slide.setDuration(1000);
((Slide)slide).setSlideEdge(Gravity.LEFT);
getWindow().setEnterTransition(slide);
getWindow().setReenterTransition(slide);
getWindow().setExitTransition(slide);
}
然后在活动#2中,我只需拨打完成,onBackPressed
或finishFromTransition
。这些似乎都没有让我回到我在堆栈上的原始活动。如果我从活动#2返回,活动#1的onResume()
会被调用..但就好像它从未获得其内容集或其任何视图初始化一样。如果我再次启动应用程序,则原始活动会调用onCreate
来重新绑定并转发视图。
另一个值得注意的奇怪事项是,输入此空白活动时不会显示android软“后退”,“主页”和“最近”按钮。事实上,从我的应用程序中保留的唯一看起来就是状态栏颜色。
更新:我注意到如果我不让过渡完成,请按回。它会回到我以前的活动就好了。只有当转换结束时,我才会进入下一个遇到问题的活动。
答案 0 :(得分:1)
想出来。在我的情况下,我在styles.xml中定义了一些过渡。以编程方式向活动添加更多动画会导致出现此行为(按下系统后退按钮后出现空白活动)。只需从styles.xml中删除任何窗口* Transition的痕迹,你就应该好了。
<item name="android:windowEnterTransition">@transition/slide_from_right</item>
<item name="android:windowExitTransition">@transition/slide_from_right</item>
答案 1 :(得分:0)
试试这个。
创建一个&#34; anim&#34; res /目录中的文件夹。
在anim文件夹中创建2个名为in_from_right.xml和out_from_left.xml的布局资源文件
将以下代码添加到in_from_right.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="100%" android:toXDelta="0%"
android:fromYDelta="0%" android:toYDelta="0%"
android:duration="1000" />
</set>
以及以下代码out_from_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:fromYDelta="0%" android:toYDelta="0%"
android:duration="1000"/>
</set>
现在将此添加到您的Activity.java文件
try {
Intent searchActivity = new Intent(this,SearchActivty.class);
searchActivty.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(searchActivty);
}catch (NullPointerException e){
e.printStackTrace();
}
overridePendingTransition(R.anim.in_from_right, R.anim.out_from_left);
不要忘记添加动画文件夹。
它适用于你。
快乐的编码。
答案 2 :(得分:0)
答案 3 :(得分:0)
在我的情况下,我为新活动覆盖了错误的onCreate
方法。在另一个onCreate
方法上对布局进行充气后,一切正常: - )