在我的应用中,我在启动时有一个启动徽标屏幕。当在计时器结束时启动主屏幕时,我将共享转换应用于该启动徽标图像。在过渡期间,它从中心(启动画面)移动到左上角(主屏幕工具栏)。
我正在使用AppbarLayout和工具栏。我正在使用两种不同的app栏变体来实现以下设计。创建两个(land / appbar_home和layout / appbar_home)布局后,将它们包含在fragment_home中(其中协调器布局为顶部)。
整个代码运行良好,直到我开始使用版本23.0.0的安卓库(appcompat,support& design)。移动到更高版本(23.0.0)的库后,转换已停止为纵向模式。但同时如果设备以横向模式保持运行良好。
在少数本地修复失败后,决定尝试不同项目中的场景。在新项目中,我添加了一个应用程序栏布局(layout / appbar_home)动画效果很好,但是一旦我添加了land / appbar_home,它就以纵向模式停止了。在横向模式下,它按预期动画。您可以看到测试项目on github。
这似乎是图书馆的一些问题。但如果没有,那么代码或方法有什么问题。
答案 0 :(得分:1)
这看起来似乎是图书馆的一个问题,但我有办法让它现在可以使用,直到它被修复。
如果在代码而不是XML中设置transitionName,它将适用于纵向和横向:
更新纵向和横向appbar_home.xml布局,为ImageView提供ID:
<ImageView
android:id="@+id/appbar_logo"
android:layout_width="wrap_content"
android:layout_height="?attr/actionBarSize"
android:layout_margin="5dp"
android:adjustViewBounds="true"
android:src="@drawable/rnd_1"
android:transitionName="@string/transition_logo" />
然后在HomeActivityFragment中,在onCreateView中设置transitionName:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_home, container, false);
ImageView appBarLogo = (ImageView) rootView.findViewById(R.id.appbar_logo);
ViewCompat.setTransitionName(appBarLogo, "logo_transition");
return rootView;
}
答案 1 :(得分:0)
我有同样的问题,我只通过切换回22版本库解决了它。您也可以尝试将所有库更新为相同版本(23),但它对我没有帮助