一界面相关知识
1,常用的一些元素
●android:windowNoTitle:控制是否要移除默认的标题栏,设为 true 以移除标题栏
●android:windowFullscreen:控制是否移除系统状态栏,设为 true 以移除状态栏并全屏显示
●android:windowBackground:将某个颜色或可绘制资源设为背景,设置颜色、绘制的值或源
●android:windowContentOverlay:窗口内容的前景之上的可绘制资源。默认情况下,就是状态栏
下的阴影,可以用任何的资源代替默认的状态栏,或者设为 null(XML 中为@null)以将其移除
●android:windowTitleBackgroundStyle:应用到窗口的标题视图的样式,可设为任何样式资源
●android:windowTitleSize:窗口标题视图的高度,可设为任何尺度或尺度资源
●android:windowTitleStyle:应用到窗口标题文本的样式,可设为任何样式资源
●android:actionBarStyle:应用到窗口 ActionBar 的样式,可设为任何样式资源
2,代码修改窗口特性:Activity.requestWindowFeature()方 法 修 改 窗 口 特 性 的 请 求 都 必
须 在 调 用Activity.setContentView()之前完成
从窗口可以获得的特性及其含义如下:
●FEATURE_CUSTOM_TITLE:将自定义的布局资源设为 Activity 的标题视图。
//在 setContentView 之前请求窗口特性
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.main);
//设置自定义标题的布局资源
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,
R.layout.custom_title);
●FEATURE_NO_TITLE:将该标题视图从 Activity 移除。
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
●FEATURE_PROGRESS:在标题中使用一个确定式进度条(0%~100%)。
//在 setContentView 之前请求窗口特性
requestWindowFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.main);
//设置进度条可见
setProgressBarVisibility(true);
//用 setProgress 控制进度条
setProgress(0);
//进度到达 100%时,进度栏消失
setProgress(10000);
●FEATURE_INDETERMINATE_PROGRESS:
在标题视图中使用一个小的非确定式(圆形的)进度指示器。
//在 setContentView 之前请求窗口特性
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setContentView(R.layout.main);
//显示进度指示器
setProgressBarIndeterminateVisibility(true);
//隐藏进度指示器
setProgressBarIndeterminateVisibility(false);
●FEATURE_LEFT_ICON:在标题视图的左侧放置一个小标题图标。
//在 setContentView 之前请求窗口特性
requestWindowFeature(Window.FEATURE_LEFT_ICON);
requestWindowFeature(Window.FEATURE_RIGHT_ICON);
setContentView(R.layout.main);
//设置自定义图标的布局资源
setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, R.drawable.icon);
●FEATURE_RIGHT_ICON:在标题视图的右侧放置一个小标题图标。
setFeatureDrawableResource(Window.FEATURE_RIGHT_ICON, R.drawable.icon);
FEATURE_ACTION_BAR:
●窗口特性会作为默认样式的一部分默认启用
//在 setContentView 之前请求窗口特性
requestWindowFeature(Window.FEATURE_ACTION_BAR);
setContentView(R.layout.main);
//访问 ActionBar 并修改它
ActionBar actionBar = getActionBar();
●FEATURE_ACTION_BAR_OVERLAY:ActionBar元素位于你的视图内容的上方,而不是内容
的下方
//在 setContentView 之前请求窗口特性
requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
setContentView(R.layout.main);
3,夜间模式
调用 setSystemUiVisibility()设置夜间模式。调用 SYSTEM_UI_FLAG_VISIBLE恢复默认模式
调用 getSystemUiVisibility()获取现在所处的模式
setSystemUiVisibility(int visibility)方法可传入的实参为:
● View.SYSTEM_UI_FLAG_VISIBLE:显示状态栏,Activity不全屏显示(恢复到有状态栏的正常情况)。
● View.INVISIBLE:隐藏状态栏,同时Activity会伸展全屏显示。
● View.SYSTEM_UI_FLAG_FULLSCREEN:Activity全屏显示,且状态栏被隐藏覆盖掉。
● View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:Activity全屏显示,但状态栏不会被隐藏覆盖,状态栏依然可见,Activity顶端布局部
分会被状态遮住。
● View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
● View.SYSTEM_UI_LAYOUT_FLAGS:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
● View.SYSTEM_UI_FLAG_HIDE_NAVIGATION:隐藏虚拟按键(导航栏)。有些手机会用虚拟按键来代替物理按键。
● View.SYSTEM_UI_FLAG_LOW_PROFILE:状态栏显示处于低能显示状态(low profile模式),状态栏上一些图标显示会被隐藏。
Android4.4新特性又增加下面俩个提供开启全屏沉浸模式:
● View.SYSTEM_UI_FLAG_IMMERSIVE:
它可以让应用进入真正的全屏模式。当这个标签与SYSTEM_UI_FLAG_HIDE_NAVIGATION和
SYSTEM_UI_FLAG_FULLSCREEN一起使用的时候,导航栏和状态栏就会隐藏,让应用可以
接受屏幕上任何地方的触摸事件。
● View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; 显现操作后系统栏在一段时间后自动隐藏
●View.SYSTEM_UI_FLAG_LAYOUT_STABLE这个标志来帮助应用维持一个稳定的布局。
4,代码修改屏幕放向:
Activity.SetRequestedOrientation()参数是 ActivityInfo.screenOrientation 属性
Activity.getRequestedOrientation()方法获得属性
manifest中android:configChanges 参数,可标记某个 Activity 在处理旋转事件时不需要运行时进行干预,降低 Android 的工作量,即销毁和重建
Activity实例,也会降低应用程序的工作量。保持 Activity 实例,应用程序不必为保持一致性而花费时间保存和还原应用程序的当前状态。