Android - 工具栏和状态栏作为内容更改的共享对象

Noa*_*ach 9 android android-5.0-lollipop shared-element-transition

在我的应用程序中,我将工具栏和状态栏设置为共享对象, 如本文第2项中的建议所示

工具栏和选项卡的一般行为和轮廓非常出色 - 唯一的问题是,当我转到活动B时,工具栏的某些UI元素不参与内容转换,尤其是工具栏标题和菜单图标.

我尝试添加一个SharedElementCallback并在其中循环工具栏和选项卡的子项并将它们全部添加到Fade转换 - 但它不会影响工具栏和选项卡内容的行为.

不知道怎么从这里开始?期望的效果是使工具栏的元素(标题,向上按钮,菜单图标)参与内容转换.

评论后添加了截图:

活动A.

在活动A中

活动B.

在活动B中

Len*_*ick 1

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

然而,如果您愿意,您可以只创建一个菜单并创建一个自定义类来操作该菜单;onCreateOptionsMenu然后,您可以在任何活动中调用此自定义类onOptionsItemSelected。

以下代码是一个示例。

定制类:

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

    }

}
Run Code Online (Sandbox Code Playgroud)

活动:

@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);

}
Run Code Online (Sandbox Code Playgroud)