如果提供了横向模式的备用布局,则纵向模式的共享动画不会设置动画。 (对于Android支持库23.0.0)

时间:2015-09-04 07:28:10

标签: android android-layout android-animation android-design-library

在我的应用中,我在启动时有一个启动徽标屏幕。当在计时器结束时启动主屏幕时,我将共享转换应用于该启动徽标图像。在过渡期间,它从中心(启动画面)移动到左上角(主屏幕工具栏)。

我正在使用AppbarLayout和工具栏。我正在使用两种不同的app栏变体来实现以下设计。enter image description here创建两个(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

这似乎是图书馆的一些问题。但如果没有,那么代码或方法有什么问题。

2 个答案:

答案 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),但它对我没有帮助