我正在使用 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文件,但这并不能完全兼容所有平台。
requestWindowFeature(com.actionbarsherlock.view.Window.FEATURE_ACTION_BAR_OVERLAY);
, - Salw