【问题标题】:Android - toolbar and status bar as shared objects with content changesAndroid - 工具栏和状态栏作为内容更改的共享对象
【发布时间】:2018-07-20 23:02:25
【问题描述】:

在我的应用程序中,我将工具栏和状态栏设置为共享对象as suggested in option #2 in this post

工具栏和选项卡的一般行为和轮廓非常好 - 唯一的问题是当我移动到活动 B 时,工具栏的一些 UI 元素没有参与内容转换,特别是工具栏标题和菜单图标。

我尝试添加 SharedElementCallback 并在其中循环工具栏和选项卡的子项并将它们全部添加到 淡入淡出过渡 - 但它不会影响工具栏和选项卡的行为内容。

知道如何从这里开始吗?期望的效果是让工具栏的元素(标题、向上按钮、菜单图标)参与内容转换。

评论后添加截图:

活动 A

活动B

【问题讨论】:

  • 大佬,详细点,怎么改,可以截图吗?
  • 你想要的行为是什么? “当我移动到活动 B 时,一些文本和图标正在改变” - 活动应该独立于您的应用程序的组件,为什么在切换到活动时它的文本和/或图标应该改变?
  • 我想要的是从 Activity A 到 B 的工具栏中的平滑过渡——这意味着 A 中呈现的图标和文本会淡出,而 B 中呈现的图标和文本会淡入。目前背景过渡正常,但动画完成时文本和图标会切换

标签: android android-5.0-lollipop shared-element-transition


【解决方案1】:

每个活动都有自己的菜单,因此您必须为每个活动创建菜单,即使它们相同。

但是,如果您愿意,您可以只创建一个菜单并创建一个自定义类来操作菜单;然后你在任何活动中调用onCreateOptionsMenuonOptionsItemSelected 上的这个自定义类。

以下代码为示例。

自定义类:

public class MenuActionBar {

    public static void createOptionsMenu(final Activity activity, Menu menu) {

        activity.getMenuInflater().inflate(R.menu.yourmenu, menu);

        // Do whatever you wanna do

    }

    public static boolean optionsItemSelected(Activity activity, MenuItem item) {

        // Do whatever you wanna do

    }

}

活动:

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    MenuActionBar.createOptionsMenu(this, menu);

    return super.onCreateOptionsMenu(menu);

}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    return MenuActionBar.optionsItemSelected(this, item)
            ? true : super.onOptionsItemSelected(item);

}

【讨论】:

  • 问题是如何动画化从一个菜单到另一个菜单的过渡
  • 但是你说它运行良好,唯一的问题是图标和文本发生了变化。尝试将您的动画代码放入自定义类中。
  • 它们在没有动画的情况下发生变化 - 工作正常的部分是整个工具栏不闪烁的部分 - 这是我链接到的帖子中解决的问题
猜你喜欢
  • 2016-07-12
  • 2015-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-03
  • 1970-01-01
相关资源
最近更新 更多