第三章--浏览器全屏显示
业务需求:浏览器设置中支持全屏显示的功能。
分析:只需要在设置界面上增加是否全屏的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开发实现浏览器全屏显示功能。分享给大家供大家参考,具体如下: 业务需求:浏览器设置中支持全屏显示的功能。 分析:只需要在设置界面上增加是否全屏的checkBox , 然后 BrowserActivity 中...
浏览器(com.android.browser).bak
Android4.2.2_r1版本的Browser 浏览器模块源代码。
android手机调用浏览器的实例程序,可以导入ADT运行。
用基于Android平台的Java编写一个手机浏览器,已经实现基本浏览器功能。
Android 4.0 Browser源码,改代码为Android 4.0 系统网络浏览器源代码。
android4.0浏览器源码,直接导入可运行,只支持4.0
最近有个项目,发现MIUI v5自带浏览器的效果不错,想模仿写一个,但总是不像,网上找了好多资料都不太对,花了一下午的时间好好研究了一番。 demo代码量非常精简,模块化设计,移植方便,只要先对res下面的文件都加...
android Browser代码分析,包含UML图,从UI层一直跟踪到webkit层,通俗易懂,是对需要对Browser开发人员参考工具
安卓Android源码——Zirco-browser:超越海豚的开源浏览器.zip
Zirco-browser浏览器Java源码,有人说她是超越海豚的开源浏览器,在Android手机中,海豚浏览器拥有着不凡的用户,有的厂商把海豚浏览器内置在手机中,本源码虽是Zirco-browser,但从功能实用性、界面美观度上,都不...
android整个Browser模块的应用层源代码,供大家学习。
Android 自带应用网页浏览器代码Browser
Browser 浏览器 android 系统自带软件
Unity3D内置浏览器 Embedded Browser 可在模型和U上显示浏览器功能
brave-browser,下一代勇敢的MacOS、Windows、Linux浏览器,最终是Android浏览器.zip
Unity内嵌浏览器Embedded Browser 3.0.0 仅供学习,请勿商用。
FileBrowser 简易文件浏览器app
安卓浏览器助手 Android 浏览器助手库可帮助开发人员在 AndroidX 浏览器支持库之上使用自定义选项卡和受信任的 Web 活动。 它包含开发人员会发现自己需要的许多常见任务的默认实现,例如: 创建一个启动器活动,它...