android 浏览器全屏显示
业务需求:浏览器设置中支持全屏显示的功能。
分析:只需要在设置界面上增加是否全屏的checkBox
, 然后
BrowserActivity
中读取这个值, 来设置窗口的
Style.
修改: 1.
修改项目下的
res/xml
文件夹下的
browser_preferences.xml
文件, 添加
<CheckBoxPreference
android:key="full_screen"
android:defaultValue="false"
android:title="@string/pref_full_screen"
android:summary="@string/pref_full_screen_summary" />
2. BrowserActivity中创建
SetScreen()
方法
public void setScreen(){
//set to full screen if necessary
SharedPreferences sp = getSharedPreferences(this.getPackageName()+"_preferences",
Context.MODE_WORLD_READABLE);
boolean isFullScreen = sp.getBoolean(BrowserSettings.PREF_FULL_SCREEN, false);
//if search dialog is open, we should quit full screen.
if(isFullScreen && !isSearchDialogOpen){
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
}else{
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
}
如果我们第一次进入浏览器是非全屏, 然后进入设置修改成全屏模式, 这时候返回到BrowserActivity
, 全屏模式必须马上切换过来。 所以我们在
OnResume()
里面调用
setScreen()
, 不要在
onCreate()
里面调
.
3. 大家可能注意到了, 判断全屏切换时有个
isSearchDialogOpen
变量, 这是用来控制在搜索框出现时的全屏切换的。 因为点击进地址栏时会调用系统的搜索框控件, 而这个控件不属于浏览器, 是个单独的窗口, 并且一开始创建时是有标题栏的。这时候如果设置成无标题栏的风格时, 就会出现标题栏先出现, 然后又隐藏上去, 并且有
2-3
次反复的情况,用户体验非常糟糕。 这里就做了个折中, 当搜索框出现时, 切换成非全屏模式, 这样标题栏就一直在那里,不会来回闪了。 退出搜索时,如果设置的是全屏,再切换成全屏模式。 所以在搜索框出现和消失时的代码部分, 还要做相应修改。 见如下代码:
public void startSearch(String initialQuery, boolean selectInitialQuery,
Bundle appSearchData, boolean globalSearch) {
if (appSearchData == null) {
appSearchData = createGoogleSearchSourceBundle(GOOGLE_SEARCH_SOURCE_TYPE);
}
SearchEngine searchEngine = mSettings.getSearchEngine();
if (searchEngine != null && !searchEngine.supportsVoiceSearch()) {
//appSearchData.putBoolean(SearchManager.DISABLE_VOICE_SEARCH, true);
}
//show status bar when search window pops up. isSearchDialogOpen = true;
//show status bar when search window pops up. getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.startSearch(initialQuery, selectInitialQuery, appSearchData, globalSearch);
}
搜索框消失部分:
//switch to full screen if necessary when search window disappears.
public void onDismiss() {
isSearchDialogOpen = false;
setScreen();
}
(PS: BrowserActivity
必须继承
OnDismissListener
接口才有
onDismiss
方法。)
推荐阅读
-
android 浏览器全屏显示
-
android 浏览器APN切换
-
使用hosts文件进行域名解析,怎么在登录该域名网站后浏览器地址不显示IP
-
PHP实现提取一个图像文件并在浏览器上显示的代码_PHP
-
请问怎样在本页,控制浏览器.要求:不显示菜单栏、不显示地址栏、不显示连接_html/css_WEB-ITnose
-
火狐浏览器一页网页中显示的字体不同该怎么办?
-
html关于强制显示 隐藏浏览器的滚动条_html/css_WEB-ITnose
-
android 显示表情 (二)
-
android 显示表情 (一)
-
html关于上一个360浏览器无法显示背景图片的问题_html/css_WEB-ITnose