笔者最近开发一款视频同步演示产品,主要功能是:多台手机设备在手机专卖店展台区同步播放宣传视频,即在任何时间打开任一台设备都要同步播放视频,达到宣传产品和整体化一的用户体验,原理即在服务器打开网页播放展示视频,循环播放同时把播放进度更新到数据库,客户端手机打开App先下载视频到本地,然后获取当前视频播放进度开始播放本地视频,从而达到媲美直播推流的效果,从效果来看视频进度参考方案完美绝杀直播推流方案。

直播推流 VS 视频参照

前者:搭建直播推流服务复杂、网络延迟较高、流量费用高、用户体验良好、成本高;

后者:搭建后台管理系统容易、网络延迟较低、无额外费用、用户体验良好、成本低;

问题提要:

在Android设备安装App播放视频时,需要视频全屏展示,即无状态栏和导航按键,但在非刘海和刘海手机设备中的遇到问题,各自设置略有不同,故简要做此记录:

1,常规全屏设置:

<resources><!-- Base application theme. --><style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"><!-- Customize your theme here. --><item name="colorPrimary">@color/colorPrimary</item><item name="colorPrimaryDark">@color/colorPrimaryDark</item><item name="colorAccent">@color/colorAccent</item></style>
</resources>

该主题源码可看到已经隐藏了状态栏:

 <style name="Theme.AppCompat.Light.NoActionBar"><item name="windowActionBar">false</item><item name="windowNoTitle">true</item></style>

但在刘海屏幕下上面会有状态栏,无法全屏:

这样效果体验不是很好,经过测试和设置,做了彻底全屏;

2,刘海全屏设置

第一步,增加主题属性,代码如下:

<resources><!-- Base application theme. --><style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"><!-- Customize your theme here. --><item name="colorPrimary">@color/colorPrimary</item><item name="colorPrimaryDark">@color/colorPrimaryDark</item><item name="colorAccent">@color/colorAccent</item></style><style name="AppTheme.StartingWindowTheme" parent="AppTheme"><!-- 非常重要,不设置,后续设置无效 --><item name="android:windowTranslucentStatus">true</item></style></resources>

第二步,在配置文件中加入代码:

<applicationandroid:allowBackup="true"android:icon="@drawable/icon"android:label="@string/app_name"android:supportsRtl="true"android:networkSecurityConfig="@xml/network_config"android:theme="@style/AppTheme"><activity android:name=".MainActivity"android:theme="@style/AppTheme.StartingWindowTheme"android:screenOrientation="portrait"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><!--全屏设置,必须加入--><meta-dataandroid:name="android.notch_support"android:value="true" /></application>

第三步,在Activity中加入如下代码:

 @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//全屏设置getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);setContentView(R.layout.activity_main);}

至此,经测试按照如上测试,注意上面设置一个也不能少,即可达到刘海全屏的良好体验,效果如下:

另附上隐藏导航虚拟按键代码片段:

 /*** 隐藏虚拟按键*/protected void hideBottomUIMenu() {//隐藏虚拟按键if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower apiView v = this.getWindow().getDecorView();v.setSystemUiVisibility(View.GONE);} else if (Build.VERSION.SDK_INT >= 19) {//for new api versions.View decorView = getWindow().getDecorView();int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;decorView.setSystemUiVisibility(uiOptions);}}/*** 恢复普通状态*/private void showBottomUIMenu() {if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower apiView v = this.getWindow().getDecorView();v.setSystemUiVisibility(View.VISIBLE);} else if (Build.VERSION.SDK_INT >= 19) {//for new api versions.View decorView = getWindow().getDecorView();int uiOptions = View.SCREEN_STATE_OFF;decorView.setSystemUiVisibility(uiOptions);}}

附:产品上线效果展示:

备注:该产品已上线,后台视频展示参考区部分请参考笔者另一篇文章:基于 Bootstrap 与 Video.js 开发Web视频播放页面 ,如有疑问,留言即可。

Android端App开发之刘海屏手机全屏设置实践相关推荐

  1. Android 端app直播源代码,解决系统启动黑屏

    前言 相信做过app直播源代码的朋友都知道,当一个APP启动时,界面会首先展示一个白屏或者黑屏,然后再进入欢迎页,稍作停留最后进入APP主页.那么这个黑屏或者白屏到底是怎么一回事呢?它的最好的解决方案 ...

  2. 基于yolov5的Android版本目标检测app开发(部署安卓手机)

    基于yolov5的Android版本目标检测app开发(部署安卓手机) 0.项目开发需求 (1)开发app部署到安卓手机 (2)支持VOC数据集上所有的目标检测 1.开发环境搭建 windows10+ ...

  3. 移动端app开发-02-iPhone/iPad/Android UI尺寸规范

    移动端app开发-iPhone/iPad/Android UI尺寸规范 本笔记抛去无用的前期分析什么的,全是干货,简洁干练 本笔记不单独针对 ios 或者 Android,两种都介绍,当然我们实际开发 ...

  4. 一种很轻松的Excel关键字方式进行Android端APP自动化测试(Java+Appium+TestNG+Excel)

    说明 本次分享Android端APP自动化测试Excel执行逻辑,整体逻辑与Web端类似,没看过的读者可看这里 =========>> 一种很轻松的Excel关键字方式进行网页Web自动化 ...

  5. 瑜伽教学TV端APP开发搭建教程IPTV系统

    瑜伽作为一种非常受欢迎的锻炼方式,受到越来越多人的喜爱.但因为时间和距离等因素的影响,很多人也喜欢自己在家里做一些瑜伽锻炼,比如饭后或者休息时间打开电视进行瑜伽锻炼,不仅仅可以很好的学习动作,还可以一 ...

  6. android 程序 读logo,Android端APP更换logo和名称后都需要些测试哪些内容呢?

    原标题:Android端APP更换logo和名称后都需要些测试哪些内容呢? 之前有人在搜狗测试粉丝群中问过APP更换logo和名称后需要怎么测试呢?小编正好经历过这样的需求,下面来系统整理一下APP更 ...

  7. Android端App无法抓包解决方法——Drony

    Android端App无法抓包解决方法--安装Drony 1:安装drony (这里手机使用的Android设备) 2:开启代理抓包软件(Burpsuite) 3:配置drony转发 1:安装dron ...

  8. 移动端app开发-03-IOS 初级开发入门教程

    移动端app开发-03-IOS 初级开发入门教程 什么是iOS   iOS是苹果公司为它的移动设备(iPhone.iPad.iWatch等)开发的移动操作系统. iOS发展史 2007年苹果发布iPh ...

  9. Android音乐App开发准备( 简易音乐 二 )

    Android音乐App开发准备( 简易音乐 二 ) 关于 效果: 编写Activity基类-BaseActivity 修改启动页 复用的标题栏 关于   第一篇看Android音乐App开发准备( ...

最新文章

  1. printf格式化输出几点注记
  2. 天问电子少年团DIY作品
  3. css Table布局:基于display:table的CSS布局
  4. Android_(游戏)打飞机04:绘画敌机、添加子弹
  5. 【转载】从Docker容器漏洞谈Docker安全
  6. bzoj千题计划277:bzoj4513: [Sdoi2016]储能表
  7. java成神之——集合框架之ArrayList,Lists,Sets
  8. ubuntu从源码编译安装python
  9. win10分辨率设置_win10分辨率设置方法教程
  10. VMware上传超过4GB文件失败
  11. 计算机思维 Computational Thinking(转载)
  12. mysql 去除全角空格_去掉全角空格
  13. 手术麻醉信息管理系统源码,生成规范麻醉文书,自动信息采集
  14. 为什么勒索软件攻击激增?
  15. 【数学建模】常用微分方程模型 + 详细手写公式推导 + Matlab代码实现
  16. 米筐量化提供的数据质量怎么样?
  17. 温故知新之GPU计算
  18. java架构师培训:java最佳测试框架JBehave的基本介绍
  19. 计算机网络——标准化
  20. 上传jar包到maven公共远程中央仓库

热门文章

  1. [LOJ 6039] 珠宝
  2. mysql的install命令是什么_mysql 安装命令
  3. BeautifulReport 实现app UI自动化测试
  4. 庄子《内篇.齐物论第二》浅析
  5. 【function.apply】apply的使用
  6. using和typedef区别
  7. 云杉网络:IaaS2.0时代为用户做好每一朵云
  8. 打开word2007总是出现配置进度_电脑玩《原神》出现掉帧延迟卡顿内存不足等问题 教你三步搞定_游戏369...
  9. 使用 Mathpix Snipping 和 MathType 快速输入公式
  10. 光辉城市mars渲染在不同模式下的配置需求,设计师必看