Android开发实现浏览器全屏显示功能

作者:quanminchaoren 时间:2022-01-01 18:01:48 

本文实例讲述了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程序设计有所帮助。

来源:http://quanminchaoren.iteye.com/blog/1487712

标签:Android,浏览器,全屏
0
投稿

猜你喜欢

  • GSON实现Java对象与JSON格式对象相互转换的完全教程

    2023-11-23 09:23:37
  • SpringBoot注解梳理(小结)

    2023-11-10 13:27:19
  • Kotlin try catch异常处理i详解

    2022-10-14 19:55:50
  • java利用Socket实现聊天室功能实例

    2022-11-10 01:25:43
  • Java如何从json字符串中获取某个值详解

    2023-11-18 12:18:12
  • 关于@Scheduled不执行的原因分析

    2021-06-27 17:13:20
  • C#导出文本内容到word文档的方法

    2021-10-15 19:00:37
  • C#设置MDI子窗体只能弹出一个的方法

    2022-03-19 23:40:11
  • 判断List和Map是否相等并合并List中相同的Map

    2022-12-29 02:11:10
  • Java中的关键字_动力节点Java学院整理

    2022-07-28 06:38:29
  • C#给picturebox控件加图片选中状态的2个方法

    2022-06-03 01:37:03
  • Java计时器StopWatch实现方法代码实例

    2021-07-25 13:43:42
  • 一文详解Java拦截器与过滤器的使用

    2021-12-17 03:40:41
  • java实现工资管理简单程序

    2021-12-29 22:40:58
  • C#中WinForm控件的拖动和缩放的实现代码

    2023-09-27 23:54:08
  • SpringMVC bean加载控制的实现分析

    2023-08-08 18:46:19
  • Spring@Value使用获取配置信息为null的操作

    2021-08-01 23:46:27
  • Java实现有限状态机的推荐方案分享

    2022-01-07 15:54:27
  • mybatis中使用大于小于等于的正确方法

    2021-10-09 03:52:56
  • 详解C#使用AD(Active Directory)验证内网用户名密码

    2023-03-03 23:17:47
  • asp之家 软件编程 m.aspxhome.com