肇庆高端模板建站,怎么注册公司支付宝,国内十大知名广告公司,51一起做网站原文地址#xff1a;http://android.xsoftlab.net/training/system-ui/status.html
这节课将会介绍如何隐藏不同的版本的状态条。隐藏状态条可以使内容展示区域更大#xff0c;因此可以提供一种更强的身临其境的用户体验。
含有状态条的APP#xff1a; 隐藏状态条的APPhttp://android.xsoftlab.net/training/system-ui/status.html
这节课将会介绍如何隐藏不同的版本的状态条。隐藏状态条可以使内容展示区域更大因此可以提供一种更强的身临其境的用户体验。
含有状态条的APP 隐藏状态条的APP注意这里的ActionBar同样也隐藏了。绝不要在没有状态条的时候还显示ActionBar: 在Android 4.0以下的版本中隐藏状态条
开发者可以通过设置WindowManager的标志来隐藏Android 4.0之前的状态条。除此之外在清单文件中设置Activity的主题也可以达到同样的效果。如果需要状态条一直保持隐藏状态那么在清单文件中设置主题是我们的首选方式:
application...android:themeandroid:style/Theme.Holo.NoActionBar.Fullscreen ...
/application
使用Activity主题的优势在于
相对于动态设置来说更易于维护也减小了出错的风险。这会使得UI转场更加平滑因为系统在实例化Activity之前J就已经得到了它需要的UI渲染信息(状态条隐藏等等)。
开发者可以通过设置WindowManager的标志来达到同样的目的。这种方法适合用户与APP交互的时候使用。
public class MainActivity extends Activity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// If the Android version is lower than Jellybean, use this call to hide// the status bar.if (Build.VERSION.SDK_INT 16) {getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);}setContentView(R.layout.activity_main);}...
}
当你设置了WindowManager标志(不论是通过Activity的主题还是动态的设置)那么该标志则会一直保留直到将该标志移除。
在Android 4.1以上的版本中隐藏状态条
你可以通过使用setSystemUiVisibility()方法隐藏Android 4.1以上系统的状态条。setSystemUiVisibility()为单个的View层级设置了UI标志;这些设置被整合进了Window层级。setSystemUiVisibility()比WindowManager的控制粒度更细。下面的代码隐藏了状态条
View decorView getWindow().getDecorView();
// Hide the status bar.
int uiOptions View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
// Remember that you should never show the action bar if the
// status bar is hidden, so hide that too if necessary.
ActionBar actionBar getActionBar();
actionBar.hide();
要注意以下几个方面
一旦UI的标志被清除(比如通过导航的方式离开了Activity)那么如果你想重新隐藏状态条的话则需要重新设置这些标志。在不同的地方设置UI标志还有些差异。如果在Activity的onCreate()方法中隐藏了系统条这时用户返回了桌面那么系统条则会再次出现。当用户重新打开Activity时onCreate()不会被再次调用所以系统条会一直保持可见。如果你想使系统条还保持原来的状态的话则需要在onResume()中或onWindowFocusChanged()中设置相应的标志。setSystemUiVisibility()只有在View可见的时候设置才有效。由导航的方式离开View会使由setSystemUiVisibility()设置的标志被清除。
使内容显示在状态条的后面
在Android 4.1以上的版本中你可以将应用的内容区域显示在状态条的后面所以内容区域的尺寸并不会随着状态条的隐藏显示而变化。通过使用SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN标志来实现这一点。你可能还需要使用SYSTEM_UI_FLAG_LAYOUT_STABLE标志来辅助APP维持一个稳定的布局状态。
当你使用了这项方法那么你就有责任确保APP UI的边界部分不会被系统条所遮盖。在很多情况下你可以通过在布局文件中添加android:fitsSystemWindowstrue属性来处理这种情况。它会调整父ViewGroup的内边距来留出系统窗口的空间这种方法足以应对大多数的应用。
随着ActionBar的变换同步状态条
在Android 4.1以上的版本中为了避免重新调整布局的尺寸当ActionBar显示或隐藏时你可以开启ActionBar的Overlay Mode。当处于Overlay Mode下时Activity的布局会使用所有的可用空间就仿佛ActionBar不存在一样系统会将ActionBar绘制在布局的上面一层。这会使布局顶部的部分变的模糊不过当ActionBar显示或者隐藏时系统并不会重写调整布局的尺寸这会使得转场过程无缝对接。
为了可以使ActionBar开启Overlay Mode你需要创建一个自定义主题并需要继承已有的携带ActionBar的主题并需要将android:windowActionBarOverlay属性设置为true即可。