android 浏览器全屏显示[通俗易懂]

android 浏览器全屏显示[通俗易懂]业务需求:浏览器设置中支持全屏显示的功能。 分析:只需要在设置界面上增加是否全屏的checkBox, 然后BrowserActivity中读取这个值, 来设置窗口的Style. 修改: 1. 修改项目下的res/xml文件夹下的browser_preferences.xml文件, 添加<CheckBoxPreference     …

大家好,又见面了,我是你们的朋友全栈君。

业务需求:浏览器设置中支持全屏显示的功能。 
分析:只需要在设置界面上增加是否全屏的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 方法。) 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/146369.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • MD5加密「建议收藏」

    MD5加密「建议收藏」MD5是一种不可逆的加密算法,它是可靠的,并且安全的。在python中不用手写这一套算法,只需要引入一个叫hashlib的模块就能搞定MD5的加密工作。这样操作也不是最安全的,因为我们可以通过以下

  • 简述modelandview_ModelAndView

    简述modelandview_ModelAndView当控制器处理完请求时,通常会将包含视图名称或视图对象以及一些模型属性的ModelAndView对象返回到DispatcherServlet。因此,经常需要在控制器中构造ModelAndView对象。ModelAndView类提供了几个重载的构造器和一些方便的方法,让你可以根据自己的喜好来构造ModelAndView对象。这些构造器和方法以类似的方式支持视图名称和视图对象。当

  • lmdb转换「建议收藏」

    lmdb转换「建议收藏」一、LMDB介绍:lmdb数据库LMDB全称为LightningMemory-MappedDatabase,就是非常快的内存映射型数据库,LMDB使用内存映射文件,可以提供更好的输入/输出性能,对于用于神经网络的大型数据集(比如ImageNet),可以将其存储在LMDB中。LMDB属于key-value数据库,而不是关系型数据库(比如MySQL),LMDB提供key-value存储,其中每个键值对都是我们数据集中的一个样本。LMDB的主要作用是提供数据管理,可以将各种

  • linux视频教程哪个最好_最好的Linux教程[通俗易懂]

    linux视频教程哪个最好_最好的Linux教程[通俗易懂]linux视频教程哪个最好Linuxisanamewhichbroadlydenotesafamilyoffreeandopen-sourcesoftwareoperatingsystemdistributionsbuiltaroundtheLinuxkernel.Linux的名称广泛地表示围绕Linux内核构建的一系列免费和开源软件操作系统发行版。…

  • Java web实现简登录页面(MyBatis+jsp+servlet+html+css+javascript)附源码「建议收藏」

    Java web实现简登录页面(MyBatis+jsp+servlet+html+css+javascript)附源码「建议收藏」本文利用MyBatis+jsp+servlet+html+css+javascript实现了一个简单的登录页面。对用户输入的用户名和密码就行校验,校验通过则登录成功,密码和用户信息保存在mysql表中,通过MyBatis访问(MyBatis相关知识可参考先前的文章MyBatis测试)。先给出最终的效果图:登录成功则进入如下页面:登录失败,则进入如下页面:如果输入的密码或者用…

  • linux如何配置maven环境变量,ubuntu配置maven环境变量「建议收藏」

    linux如何配置maven环境变量,ubuntu配置maven环境变量「建议收藏」下载maven使用wget命令下载maven二进制文件。wgethttps://mirror.bit.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz下载完成后将文件解压缩到/opt/maven目录中:安装maven创建文件夹sudomkdir/opt/maven解压文件sudotar-zxv…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号