使用共享元素,界面切换的时候,出现了闪屏现象,跳转的时候,可以明显地看到界面闪白屏,很影响视觉效果。
原本的代码是这样的:
在v21-style.xml中,目标Activity的style是这样的:
<style name="AlbumTheme" parent="MaterialTheme.Base">
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/background_dark</item>
</style>
然后是Transition的style:
<style name="ThumbTransitionStyle">
<item name="android:transitionName">@string/translation_thumb</item>
</style>
在清单文件中,目标activity加上style:
android:theme="@style/AlbumTheme"
在需要进行共享的控件中加入:
style="@style/ThumbTransitionStyle"
在跳转的地方的代码是:
Intent it = new Intent(mContext, AlbumActivity.class);
ActivityOptionsCompat activityOptions = ActivityOptionsCompat.makeSceneTransitionAnimation(
mActivity,
new Pair<View, String>(mAlbumImg,mContext.getString(R.string.translation_thumb)));
ActivityCompat.startActivity(mContext, it, activityOptions.toBundle());
做完以上这些之后,界面跳转有了共享元素切换的效果,但是界面出现了闪屏,而且从目标Activity返回的时候,闪屏问题更加严重。
最后解决的方案是,在上面values-21包下的style.xml中的AlbumTheme中再加上下面的代码
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>