汉堡菜单旋转到新活动的箭头
Posted
技术标签:
【中文标题】汉堡菜单旋转到新活动的箭头【英文标题】:Hamburger menu spin to arrow on new activity 【发布时间】:2015-06-28 19:01:41 【问题描述】:我注意到,随着 android 版 Gmail 的最新更新,当您点击其中一封电子邮件时,会打开一个新的 Activity(由于返回箭头,我假设它不是一个片段)。
然而,新活动的后退箭头并不仅仅像默认情况下那样显示。 主界面中的汉堡菜单在动画中旋转成箭头(请参阅此处的视频:http://material-design.storage.googleapis.com/publish/material_v_3/material_ext_publish/0B3T7oTWa3HiFbFRfT196SWRyS2s/animation_delightfuldetails_wellcrafted.webm)
(注意:新打开的邮件可能是一个片段,因为工具栏没有改变并且默认的新活动动画没有播放。我不确定是哪一个。)
澄清:我知道如何让汉堡菜单在按下/打开导航抽屉时变成箭头。事实上,我故意禁用了上述动画,因为它违反了规范。 (见这篇文章:http://www.androidpolice.com/2014/10/30/google-turns-design-inconsistency-ten-latest-round-navigation-drawers/)。但是,我想知道在创建新片段/活动时是否可以使用相同的动画,无论 Gmail 可能使用哪个。
【问题讨论】:
在我看来,GMail 正在使用片段。在这里您可以找到带有旋转箭头的菜单抽屉模板:github.com/kanytu/android-material-drawer-template。 【参考方案1】:如果您使用android.support.v7.app.ActionBarDrawerToggle
,它会自动生成动画。
【讨论】:
是的,我知道它会自动动画,至少在您拉开导航抽屉时是这样。但是我想知道当我创建一个新的活动/片段时是否可以触发动画 有关于这个问题的消息吗?似乎找不到其他任何东西【参考方案2】:为时已晚,但我将其放在这里以备后续问题。 Gmail 应用程序在片段中打开电子邮件。因为您仍然可以在此页面中使用汉堡菜单。将汉堡菜单图标更改为后退按钮我使用此代码,它工作正常。
public void setupToolbarNavigation()
toggle.setDrawerIndicatorEnabled(false);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
toggle.setToolbarNavigationClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
onBackPressed();
reverseToolbar();
);
public void reverseToolbar()
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
getSupportActionBar().setHomeButtonEnabled(false);
toggle.setDrawerIndicatorEnabled(true);
toggle.setToolbarNavigationClickListener(null);
toggle 是 ActionBarDrawerToggle 的实例,您可以在活动中使用此代码启动它
toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
当用户单击时,reverseToolbar 将工具栏后退图标更改为汉堡菜单图标。在您的活动中声明此方法并替换片段中的图标,将此代码放入您的片段。 ((YourActivity)getActivity()).setupToolbarNavigation
【讨论】:
以上是关于汉堡菜单旋转到新活动的箭头的主要内容,如果未能解决你的问题,请参考以下文章