在正常情况下,当游戏陪玩平台系统启动时,界面会首先展示一个白屏或者黑屏,然后再进入欢迎页,稍作停留最后进入游戏陪玩平台系统主页。那么这个黑屏或者白屏到底是怎么一回事呢?应该如何解决呢?今天我们认真的讨论一下这个小问题。

历史原因

当系统启动一个游戏陪玩平台系统时,zygote进程会首先创建一个新的进程去运行这个游戏陪玩平台系统,但是进程的创建是需要时间的,在创建完成之前,游戏陪玩平台系统界面是呈现假死状态的,这就很尴尬了,因为用户会以为没有点到游戏陪玩平台系统而再次点击,这极大的降低用户体验。
Android需要及时做出反馈去避免这段迷之尴尬。于是系统根据你的manifest文件设置的主题颜色的不同来展示一个白屏或者黑屏。而这个黑(白)屏正式的称呼应该是Preview Window,即预览窗口。

好了,现在我们明白了,Preview Window其实是为了提高用户体验而有意设定的。因此,其实如果不是强迫症,它可能并不是一个问题。

但是我猜大部分小伙伴应该是和我一样的强迫症患者:这么丑的黑屏怎么能出现在我的游戏陪玩平台系统上呢???!!!

所以,下面我们就来聊聊这个问题的解决方案。

解决方案

既然决定解决这个问题,那么从哪里入手呢,Android在选择展示黑屏或者白屏的时候,是根据你游戏陪玩平台系统设定的主题而不同的,也就是说,虽然你的代码没有被执行,你的配置文件却被提前读取了,用来作为展示Preview Window界面的依据。

所以,我们的解决方案的切入口就是整个游戏陪玩平台系统的manifest文件,更确切的说应该是主题配置文件。

方案一 :开历史倒车

这个方案就是禁止加载Preview Window,具体做法如下:

style.xml

<style name="APPTheme" parent="@android:style/Theme.Holo.NoActionBar"><item name="android:windowDisablePreview">true</item>
</style>

将游戏陪玩平台系统Theme设定为启动的Activity的主题,即可禁止Preview Window,当然,也有人通过把preview window设置为全透明,也达成了类似的效果。

结果就是,当你点击游戏陪玩平台系统时,界面会无响应一段时间,然后进入游戏陪玩平台系统。

我个人强烈不推荐这么做,因为Android想方设法提升的用户体验一下子被你打回解放前。

方案二:自定义Preview Window

具体方法如下:

style.xlm

<style name="APPTheme" parent="@android:style/Theme.Holo.NoActionBar"><item name="android:windowBackground">@drawable/splash_icon</item>
</style>

同样将游戏陪玩平台系统主题设置到启动的Activity的主题中,windowBackground就是即将展示的preview window。其中splash_icon可以是一整张图片,网上很多小伙伴也都是这么做的。其实它也可以是一个能解析出图片资源的XML文件,好像只有layer-list这种能做得到,因为它能够将多个drawable叠加起来展示。

splash_icon.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"android:opacity="opaque"><item android:drawable="@color/white"/><item><bitmapandroid:gravity="center"android:src="@drawable/qq"/></item>
</layer-list>

这样设置之后,当你点击游戏陪玩平台系统,会立马进入你配置的界面,然后启动欢迎页,效果如下

那么,将preview window直接设置为图片和设置为xml文件有什么区别或者优劣呢?

先谈谈这种方案的优劣,首先这种方案已经解决了原生preview window的单调难看的问题,在原来的基础上进一步提升了用户体验。可是我们的游戏陪玩平台系统都是有欢(guang)迎(gao)页的,从preview window跳转到欢(guang)迎(gao)页是不可避免的,这样的话,两个界面的切换就会显得很突兀的,

所以强迫症的我们,尝试让这两个界面的切换变成一个界面的变化,从而进一步提升游戏陪玩平台系统显示效果,怎么样才能让两个界面切换看起来像是在同一个界面里的变化呢?答案就是: 动画。

在这种需求下,图片和xml文件的区别就出来了,因为后者可以帮助我们更准确的实现动画。

方案三:自定义Preview Window增强版

有了动画之后,游戏陪玩平台系统界面切换顺畅了许多。
上面的动画实现其实非常简单,无非就是放缩,移动,渐变的组合使用(我仅仅用作范例给大家参考),具体的动画代码细节就不谈了,有兴趣可以去github上看本次项目的demo,我们重点来聊一聊思路。

在这里我们需要明确一点的是,preview window只能是静态图,它本身是不展示动画的,我们这里的动画,其实是在进入欢迎页之后的展示的。明确了这一点之后,整个动画效果的实现思路其实就已经摆在我们眼前了,那就是当界面从 Preview Window 跳转到 游戏陪玩平台系统欢迎页 的时候,欢迎页必须首先展示一个和Preview Window一模一样的界面,让人看起来好像界面还没切换一样,然后再慢慢切换到游戏陪玩平台系统欢迎页。

然后,我们再来谈谈为什么设置xml的方式可以帮助我们更准确的实现动画,就是因为要保证Preview Window和游戏陪玩平台系统欢迎页最开始展示的界面保持绝对一致,只有通过xml的布局才是达到这种效果。

好了,游戏陪玩平台系统启动页做到这个份儿上,应该就可以交货了,不过还有一个小问题需要大家注意的,那就是我们给Preview Window设置的背景图如果不做处理,图片就会一直存在于内存中,所以,当我们进入到游戏陪玩平台系统欢迎页的时候,不要忘了把背景图设置为空:

SplashActivity.java

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
//将window的背景图设置为空
getWindow().setBackgroundDrawable(null);
super.onCreate(savedInstanceState);
}

以上就是“游戏陪玩平台系统启动页黑屏情况,该如何解决?”的全部内容了,希望对大家有帮助,虽然出现黑屏或白屏的情况并不影响正常使用,但是会给用户留下不太好的第一印象,所以在游戏陪玩平台系统开发时,还是得优化这个问题。

游戏陪玩平台系统启动页黑屏情况,该如何解决?相关推荐

  1. 游戏陪玩平台源码开发,锁屏状态下消息提醒的实现

    当游戏陪玩平台源码在后台运行时,如果用户关闭了手机屏幕(手机进入灭屏休眠状态),这个时候有消息进来怎么办?这就需要在游戏陪玩平台源码开发时实现手机锁屏状态下消息提醒功能. 解决思路: 1.游戏陪玩平台 ...

  2. Android系统(121)---Android启动页黑屏及最优解决方案

    Android启动页黑屏及最优解决方案 前言 相信做过Android的朋友都知道,当一个APP启动时,界面会首先展示一个白屏或者黑屏,然后再进入欢迎页,稍作停留最后进入APP主页.那么这个黑屏或者白屏 ...

  3. Android 系统(119)---Android启动页黑屏及最优解决方案

    Android启动页黑屏及最优解决方案 前言 相信做过Android的朋友都知道,当一个APP启动时,界面会首先展示一个白屏或者黑屏,然后再进入欢迎页,稍作停留最后进入APP主页.那么这个黑屏或者白屏 ...

  4. android最优化启动画面,Android启动页黑屏及最优解决方案

    原标题:Android启动页黑屏及最优解决方案 作者:拉丁吴 链接:https://juejin.im/post/58ad90518ac2472a2ad9b684 前言 相信做过Android的朋友都 ...

  5. Windows系统启动进入桌面后就黑屏的5种解决方法图文教程(转载-脚本之家)

    Windows 系统在启动过程中,过了滚动条后准备登陆系统,在进入 Windows 桌面后就黑屏了,或看不到桌面背景和开始菜单,需要如何处理?本文提供Windows系统启动进入桌面后就黑屏的解决方法, ...

  6. 在开发游戏陪玩平台系统时,如何实现新订单提示效果?

    在游戏陪玩平台系统中,用户通过实名认证审核.资质技能审核后,可以申请成为平台大神,带其他玩家组队开黑并获得收益.在游戏陪玩平台系统的整个约单流程中,新订单提示是很重要的模块,尤其是对于需要接单的大神而 ...

  7. 如何实现游戏陪玩平台源码中聊天室内的礼物连击效果?

    为了增加观众与主播以及连麦用户的互动,在游戏陪玩平台源码开发时,专门设置了礼物打赏功能,该功能的主要使用场景就是游戏陪玩平台源码开发的多人语音聊天室内. 由于观众数量比较多,所以在赠送礼物时,会出现礼 ...

  8. 游戏陪玩平台源码开发,依赖收集和触发的实现

    概述 在游戏陪玩平台源码开发中,依赖收集和触发比较复杂,不容易理解.今天咱们将它最简化的讲出来. 前期准备 1.声明一个Map做储蓄: 2.current用来传递数据: 3.data数据备用: con ...

  9. 爱拍录制出现“黑屏”情况的解决方法

    爱拍录制出现"黑屏"情况的解决方法 如图所示,"爱拍"的录屏功能,但是无法正常的工作,出现了黑屏的情况.对于应用软件使用出问题,一般上网查询大部分可以解决,但是 ...

最新文章

  1. WeifenLuo.WinFormsUI.Docking
  2. storm能不能测试wadl_达尔优牧马人A960暴风Storm体验:轻而不飘,精准击打
  3. ppp协议pap验证过程状态转移图_电脑网络知识:TCP协议的高级特性,你所不知道的TCP...
  4. JoyOI(TYVJ)1061-Mobile Service【线性dp】
  5. JadClipse eclipse反编译插件
  6. leetcode 100.Same Tree
  7. ClippingNode实现新手引导高亮裁切
  8. HTML里face作用,html5 – @ font-face在子文件夹中的字体时不起作用
  9. 2018 ACM-ICPC Asia Beijing Regional Contest题解
  10. 学习网络编程第一步,安装NetAssist网络调试助手
  11. LWIP协议栈详解(1)_LWIP协议与网络分层
  12. 计算机英语教程第6版,计算机英语教程(第6版)
  13. 同是匿名社交,国内外“秘密”大不同
  14. 羽毛球高远球技术动作要领解码
  15. 简单的超市会员管理系统
  16. iOS开发之录屏时如何使系统录不到敏感信息
  17. 如何在Linux系统中安装DBeaver通用数据库工具
  18. 不相交轮换的乘积怎么求_怎么样将一个轮换分解成不相交的轮换的乘积
  19. 关于平稳退化,之前存在的问题
  20. 在Windows 7上安装KB4457144补丁出错的解决方法

热门文章

  1. Oracle 模糊查询表信息
  2. 苹果硅Mac Pro预测
  3. PHP在线网课问答题库搜索,选修课题库,大学生网课搜题神器,超星网课搜题软件,知到章节搜题app...
  4. python中用list实现queue
  5. seo技术:四处一词究竟是什么?怎么运用到网站
  6. scenarioRunner使用
  7. python基于itchat实现微信群消息同步机器人
  8. Nginx学习之内存管理
  9. css3鼠标悬停图片边框线条动画特效
  10. 给你分享10种加好友方法(新手必看!!!)