android - 如果提供横向模式的替代布局,则纵向模式的共享动画不会动画。 (适用于 android 支持库 23.0.0)

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

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

我正在使用 AppbarLayout 和工具栏。我正在使用两种不同的应用栏变体来实现以下设计。 enter image description here创建两个(land/appbar_home 和 layout/appbar_home)布局后,将它们包含在 fragment_home 中(顶部有协调器布局)。

在我开始使用 23.0.0 版的 android 库(appcompat、支持和设计)之前,整个代码运行良好。移动到更高版本 (23.0.0) 的库后,纵向模式的转换停止。但同时,如果设备处于横向模式,它运行良好。

在几次本地修复失败后,决定在不同的项目中尝试该场景。在新项目中,我添加了一个应用栏布局 (layout/appbar_home) 动画效果很好,但是一旦我添加了 land/appbar_home,它就停止在纵向模式下。在横向模式下,它会按预期进行动画处理。可以看到测试项目on github .

图书馆似乎出了点问题。但如果不是,代码或方法有什么问题。

最佳答案

这看起来确实像是库的问题,但我有一种方法可以让您暂时使用它,直到它被修复。

如果您在代码中而不是 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;
}

关于android - 如果提供横向模式的替代布局,则纵向模式的共享动画不会动画。 (适用于 android 支持库 23.0.0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32392451/

相关文章:

android - 现有库可重现 Foursquare android 应用程序的放大 imageView 效果?

android - 将波纹效果添加到 RecyclerView 项目

android - 我可以添加 AnimationListener 进行 fragment 翻译吗

java - 启动时出现 Eclipse 错误

java - 带参数改造 GET 请求

android - VisibilityAwareImageButton 用法

android - 软键盘与 TabHost 中的 EditText 重叠

android - 如何区分互联网是wifi还是android中的移动数据?

java - 如何将 POST 响应放入字符串选项卡中?

android - 进度对话框在 Lollipop Devices 上有白色背景,