ActionBar或者ActionBarSherlock - 平滑地隐藏/显示ActionBar

19

我正在使用 ActionBarSherlock,并尝试使用以下代码来隐藏/显示全屏图像的操作栏:

getSupportActionBar.hide();

getSupportActionBar.show();

但是它非常卡顿和笨拙。有没有办法使它更加流畅,或者应用翻译/不透明度动画?

通过进一步检查ABS源代码,并观察其行为,似乎至少定义了最小量的动画。标准ActionBar则不然。

仅出于完整性考虑,这里是我从一个ImageView.click调用的相关代码:

if( shouldRender )
{
  . . .

  getSupportActionBar().hide();

  getWindow().addFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN );
}
else
{
  . . .

  getSupportActionBar().show();

  getWindow().clearFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN );
}

值得注意的是,标志位的设置/清除也会导致跳转,但这种跳转远不如状态栏高度的变化明显,所以如果需要处理,我会之后再考虑。

编辑:这里(由ABS的创建者发布)似乎声称原生ActionBar上无法实现。我可以尝试编辑定义动画的两个XML文件,但这并不能完全兼容所有平台。

1个回答

17

我使用了一个覆盖式的ActionBar

 requestWindowFeature(com.actionbarsherlock.view.Window.FEATURE_ACTION_BAR_OVERL‌​AY);

当调用show()/hide()时,它不会显示动画。


4
Overlay ActionBar是什么?您能提供更多信息吗? - greg7gkb
1
requestWindowFeature(com.actionbarsherlock.view.Window.FEATURE_ACTION_BAR_OVERLAY);, - Salw
2
该主题的官方文档:http://developer.android.com/reference/android/view/Window.html#FEATURE_ACTION_BAR_OVERLAY - ol_v_er
1
一个覆盖 ActionBar 是一个完全或部分透明的 ActionBar。虽然它与这个问题无关,但是如果想要从你的样式文件中允许覆盖 ActionBar,请在你的主题中添加以下内容: <item name="android:windowActionBarOverlay">true</item> <item name="windowActionBarOverlay">true</item> - Carlos
在你的onCreate()方法中,你必须在任何其他操作之前调用它。它非常好用。 - Munchies

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接