在做项目是,需要加一个splash,以美化应用,消除app启动等待的乏味

一、使用环境

使用Android Studio activity 继承 AppCompatActivity, 实现splash功能

测试环境,没有虚拟返回按键的安卓手机和带有虚拟按键的手机,测试虚拟按键对splash的影响

二、目标与一般实现

一般实现splash是新建一个activity,然后在这个acrivity的xml文件里设置splash背景,这样做的效果和没有加splash的效果一样,即有黑屏或白屏(看使用的主题而定)

三、实现启动无白屏(黑屏)

实现无白屏的原理是,在activity的主题里设置背景,即用自己的splash图片代替app启动时的白屏(默认的启动背景是白屏或黑屏)代码如下:

注:以上这个theme就是完整的配置,直接设置NoTitleFullscreen 为启动Activity的theme,就会得到完美的splash,代码及使用方法如下:

<activityandroid:name=".SplashActivity"android:configChanges="orientation|keyboardHidden|screenSize"android:label="@string/app_name"android:theme="@style/NoTitleFullscreen"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>

在values/styles.xml里面增加主题

    <!--设置-全屏--><style name="NoTitleFullscreen" parent="AppTheme.NoActionBar"><item name="android:windowNoTitle">true</item><item name="windowActionBar">false</item><item name="android:windowFullscreen">true</item><item name="android:windowContentOverlay">@null</item><item name="android:windowBackground">@drawable/bg_splash</item><item name="android:windowIsTranslucent">true</item></style>

其中

<item name="android:windowBackground">@drawable/bg_splash</item>

就是指定一幅启动画面,代替原来的白屏,从而去除白屏

//其他参数的作用在下面解释

四、实现在splash隐藏状态栏,以及actionbar

在上面的主题里面已经包含了设置全屏的参数,再次 列出:

 <item name="android:windowNoTitle">true</item><item name="windowActionBar">false</item><item name="android:windowFullscreen">true</item>

五、除了设置启动背景图,还专门增加一个splashActivity 以实现稳定的启动效果

从其他博客可以看到,有的作者建议直接使用如下参数,去掉白屏,并且把此作为启动splash

<item name="android:windowBackground">@drawable/bg_splash</item>

但是实际测试,这样的启动会非常的快,一闪而过(这种做,相当与把以前的白屏替代为自己的图片,白屏是一闪而过)

因此这几建议专门增设一个activity作为splashActivity,并在splashActivity控制splash时间。

这样设计之后的效果是:一共有需要设置两次背景图片:

第一次:splashActivity通过theme设置的启动背景

以下的设置方法:

 android:theme="@style/NoTitleFullscreen"
<style name="NoTitleFullscreen" parent="AppTheme.NoActionBar"><item name="android:windowBackground">@drawable/bg_splash</item></style>

第二次:splashActivity页面背景

以下的设置方法:

在SplashActivity的资源文件activity_splash.xml里设置:

android:background="@drawable/bg_splash"

六、在没有实体按键的手机上,虚拟按键会遮挡启动的splash造成显示不完全

在没有虚拟按键的手机上,这两个背景显示能完美对应,显示正常。
但是在有虚拟按键的手机上,虚拟按键会影响第一次设置的图片的正常显示(图片被虚拟按键遮挡)
针对这个问题在,NoTitleFullscreen里面增加了如下选项;

<item name="android:windowIsTranslucent">true</item>

从而达到在有虚拟按键的的时候,正常显示

七、新增SplashActivity的延时java代码实现

public class SplashActivity extends AppCompatActivity {private final Handler mHideHandler = new Handler();private final Runnable gotoPage = new Runnable() {@Overridepublic void run() {Intent mIntent = new Intent(SplashActivity.this, MainActivity.class);startActivity(mIntent);finish();}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_splash);mHideHandler.postDelayed(gotoPage, 3000);}
}

android AppCompat, splash启动白屏(黑屏)全屏,去掉状态栏,以及splash与虚拟按键遮挡相关推荐

  1. android app启动失败,Android应用App启动白屏(黑屏)问题解决

    Android应用App启动白屏(黑屏)问题解决 点击Android手机桌面的应用App icon图标后,Android启动这个应用,正常情况下会立即看到并进入到开发者自己写在MainActivity ...

  2. Android应用App启动白屏(黑屏)问题解决

    Android应用App启动白屏(黑屏)问题解决 点击Android手机桌面的应用App icon图标后,Android启动这个应用,正常情况下会立即看到并进入到开发者自己写在MainActivity ...

  3. html5--移动端视频video的android兼容,去除播放控件、全屏等

    android下html5的视频播放一直是前端兼容的重灾区,各种体验差,被诟病已久.但之前的故宫穿越H5,和吴亦凡入伍H5,利用的视频技术,貌似又给人一种新面貌. 前段时间做某项目,恰好也是一个类似视 ...

  4. android 全屏动画,Android开发之全屏与非全屏的切换设置方法小结

    本文实例讲述了Android开发之全屏与非全屏的切换设置方法.分享给大家供大家参考,具体如下: 静态方法 1. 代码方式 在Activity类OnCreate方法中设置,代码如下 @Override ...

  5. android中布局全屏,怎么在Android 应用中实现一个全屏与非全屏功能

    怎么在Android 应用中实现一个全屏与非全屏功能 发布时间:2020-12-04 17:31:45 来源:亿速云 阅读:135 作者:Leah 怎么在Android 应用中实现一个全屏与非全屏功能 ...

  6. android动态设置全屏,Android开发之全屏与非全屏的切换设置方法小结

    本文实例讲述了Android开发之全屏与非全屏的切换设置方法.分享给大家供大家参考,具体如下: 静态方法 1. 代码方式 在Activity类OnCreate方法中设置,代码如下 @Override ...

  7. 2022.05.20-电脑切换全屏与非全屏(特别是谷歌浏览器)的时候会发生卡顿黑屏

    切换全屏与非全屏的时候会发生卡顿黑屏 可能是自己之前插的两块屏幕,后来一块屏幕断掉了,再将那一块屏幕接上去就好了 这个很有可能是谷歌浏览器造成的,因为往往是谷歌浏览器切屏的时候才会出现这个问题,而其他 ...

  8. Android 12.0关机界面全屏显示(UI全屏显示)

    1.概述 在12.0的系统定制化开发中,原生系统关机界面 UI是靠右边显示的,但是客户需求要求全屏显示 重启和关机功能键居中显示,所以就涉及到调整UI 然后全屏显示,需要实现窗口的全局布局实现全屏功能 ...

  9. cf不能全屏win7的解决方法_Win10运行DNF全屏后黑屏怎么办|DNF全屏后黑屏解决方法...

    DNF是目前还有不少用户在玩的游戏,有使用win10系统的用户,全屏玩DNF这款游戏的时候,出现黑屏,从游戏外取消窗口化或者还原初始配置,已经尝试多种办法,问题都没有得到解决.这篇文章是系统部落给大家 ...

最新文章

  1. 告诫那些有创业梦的大学生,切记千万不要盲目创业!
  2. java jbutton 禁用_java-禁用后对jButton执行的操作
  3. Sphinx+Scws 搭建千万级准实时搜索应用场景详解
  4. 干货分享 | 详解特征工程与推荐系统及其实践(附PPT)
  5. CCF201604试题
  6. KVM下桥接的设置(Ubuntu)
  7. 软件设计师--中级 学习笔记(2)
  8. 多模态理论张德禄_专家观点||张德禄:系统功能理论视阈下的多模态话语分析综合框架...
  9. 如何使用Apollo / Graphene管理GraphQL突变中的文件上传
  10. linux 检测SSD寿命
  11. 前端开发公众号的调试
  12. 利用Python提取函数图像数据并拟合曲线
  13. 计算机毕设Python+Vue医院人事及科室病区管理(程序+LW+部署)
  14. 一、数据仓库基础理论
  15. 小米路由器的服务器无响应怎么回事,小米路由器常见问题与解决方法(高级功能)...
  16. 记一次生产大对象导致的OOM让架构师连夜排查解决
  17. 电影评论情感分析-IMDB数据集 | python 利用朴素贝叶斯、神经网络模型
  18. 2022年全球与中国数模转换器市场现状及未来发展趋势
  19. 顶点计划:996问题讨论
  20. wildfly安装及基本使用

热门文章

  1. 突然!微软宣布永久关闭全球实体店
  2. 苏宁“星际家园”正式上线,区块链电商之战已打响
  3. java实现 pdf转word
  4. 餐饮店点餐小程序开发怎么做
  5. MATLAB 通过对话框返回值选择下一步操作
  6. 大学本科生、研究生和博士生的本质区别
  7. apache评分标准,抗感染apacheⅲsapsii评分标准.doc
  8. 《第16项目:国家税务协同平台项目》-视频目录
  9. 桌面有u盘符计算机里没有了,如何让u盘悬浮在桌面,桌面不显示u盘图标
  10. 钢琴的贮存销售模型matlab,在Matlab上模拟钢琴并制作爱的礼赞