第三章--浏览器全屏显示
业务需求:浏览器设置中支持全屏显示的功能。
分析:只需要在设置界面上增加是否全屏的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 4.0 Browser的源码进行研究,开发者不仅可以学习到Android系统层面的知识,还能掌握浏览器开发的核心技术,这对于创建自己的Android浏览器或者优化现有应用的网络和渲染性能都极具价值。但需要注意,...
【标题】"android_browser.rar" 是一个针对 Android 平台的项目,专注于开发 Android 自带浏览器的调用和交互。这个压缩包包含了开发一个能够与 Android 系统浏览器交互的应用程序所需的所有源代码和配置文件。 ...
Android 4.0 Browser浏览器源代码是Android操作系统中内置浏览器的开发基础,它包含了实现一个功能完备、高效、用户友好的Web浏览体验的所有组件。这个模块涵盖了应用层的源码,为开发者提供了一个深入理解Android...
通过分析Browser模块的源代码,开发者可以学习到Android系统中如何实现一个功能完善的浏览器,这对于理解Android系统工作原理,以及开发自己的WebView应用都是非常有帮助的。同时,对于进行性能优化、安全增强或者...
浏览器(com.android.browser).bak
在Android开发中,实现浏览器全屏显示功能是一个常见的需求,主要目的是为了提供更沉浸式的浏览体验,消除屏幕顶部的状态栏和底部的操作栏。以下将详细解释如何实现这一功能。 首先,我们需要在设置界面中添加一个...
在Android平台上开发一款手机浏览器,是一项涉及多个技术领域的工作,包括网络通信、用户界面设计、渲染引擎、数据存储以及性能优化等。以下是对这个项目的关键知识点的详细解释: 1. **Android开发环境**:首先,...
《Android浏览器代码分析:深入理解Browser机制》 在Android系统中,内置的Browser应用是用户访问互联网的重要途径。本文将通过详细的代码分析,配合UML(统一建模语言)图,帮助开发者深入理解Browser的工作原理,...
通过分析Android 4.0 Browser的源码,我们可以深入理解其工作原理,从而学习如何优化移动Web应用的性能,了解Android系统对Web内容的渲染方式,以及如何实现自定义浏览器功能。 首先,Browser应用的核心组件包括...
"Browser"这个文件可能是Android浏览器应用的源代码包。通过分析这部分源码,我们可以了解到以下几个关键知识点: 1. **BrowserActivity**:这是Android浏览器的主要入口类,负责初始化WebView对象,设置加载的URL...
在Android应用开发中,WebView是一个至关重要的组件,它是Android系统内置的轻量级浏览器引擎,用于在应用程序内部显示网页内容。开源Android浏览器通常会基于WebView进行定制,以提供更高效、安全和个性化的浏览...
最近有个项目,发现MIUI v5自带浏览器的效果不错,想模仿写一个,但总是不像,网上找了好多资料都不太对,花了一下午的时间好好研究了一番。 demo代码量非常精简,模块化设计,移植方便,只要先对res下面的文件都加...
《深入剖析Zirco-Browser:Android开源浏览器的源码解析》 Zirco-Browser是一款基于Android平台的开源浏览器,其源码为我们提供了一窥移动浏览器内部运作机制的宝贵机会。通过研究这款浏览器的源码,我们可以学习到...
在Android系统中,Browser应用程序是默认的Web浏览器,它允许用户浏览互联网上的网页。深入理解Android源码中的Browser模块对于Android应用开发者来说至关重要,因为这能帮助他们优化网页加载性能,实现自定义功能,...
在Android平台上,浏览器插件开发是一项复杂而关键的技术,它涉及到如何将特定功能集成到浏览器中,以增强用户的浏览体验。以下是对Android浏览器插件开发的深入解析。 首先,插件本质上是一个功能模块,用于扩展...
通过以上分析,我们可以更深入地理解Android Browser的内部运作机制,这对于开发者来说,无论是进行性能优化、功能扩展还是开发自定义浏览器,都具有极高的参考价值。此外,对于学习Android系统和Web开发的人来说,...
【标题】"UC.rar_android_browser_浏览器" 涉及的知识点主要集中在Android平台上的浏览器应用开发。在Android系统中,开发一个简单的浏览器涉及到多个关键技术和组件,包括但不限于以下几点: 1. **WebView组件**:...
Zirco-Browser作为压缩包中的文件名,可能是这款Android浏览器的名称。Zirco可能是一个简写或者别名,代表了浏览器的某种特性,例如轻量级、快速或者安全。 总结起来,这款【英文版Android浏览器】以WebKit内核为...