Android启动界面SplashActivity的实现方法

2024-05-12 09:32

本文主要是介绍Android启动界面SplashActivity的实现方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

实现

创建欢迎页SplashActivity

public class SplashActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_splash);Handler handler = new Handler();handler.postDelayed(new Runnable() {@Overridepublic void run() {Intent intent = new Intent(SplashActivity.this,MainActivity.class);startActivity(intent);SplashActivity.this.fileList();}},3000);}@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if(keyCode == KeyEvent.KEYCODE_BACK){return true;}return super.onKeyDown(keyCode, event);}
}

欢迎页文件activity_splash

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:src="@mipmap/splash"android:scaleType="centerCrop"/>
</LinearLayout>

主界面MainActivity和布局文件activity_main这里不写了

AndroidManifest设置SplashActivity为启动的activity

<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.xx.myapplication">......<applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name=".SplashActivity"android:configChanges="orientation|screenSize|keyboardHidden"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activity android:name=".MainActivity"/></application></manifest>

主题AppTheme去掉标题栏

    <!-- Base application theme. --><style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"><!-- Customize your theme here. -->......<item name="windowNoTitle">true</item></style>

效果图
在这里插入图片描述
白屏问题处理

当我们点开app会先进入短暂的空白页面再进入欢迎页面

原因

  1. 在Activity启动onCreate()方法,执行setContentView()时出现白屏
  2. 页面的窗体绘制先于资源加载,这个时候就会出现短暂的白屏,也就是说还没加载到布局文件,就已经显示了window窗口背景,黑屏白屏就是window窗口背景
<style name="ThemeSplash"   parent="Theme.AppCompat.Light">  
这种亮色系造成了白色闪屏<style name="ThemeSplash"   parent="ThemeOverlay.AppCompat.Dark">
这种亮色系造成了黑色闪屏<item name="android:windowBackground">@color/white</item>
归根结底也就是这个属性决定了白屏或黑屏的颜色

解决办法

我们要想办法让这个黑色的背景变成用户喜欢看到的画面或者让它透明化。所以,我们有下面两种方案:

  • 自定义SplashActivity的Theme
    就是把出现的黑屏通过android:windowBackground属性设置为我们想要的背景
<style name="SplashTheme" parent="android:Theme"><item name="android:windowBackground">@mipmap/splash</item><item name="android:windowNoTitle">true</item>
</style>
<activity android:name=".SplashActivity"android:theme="@style/SplashTheme"android:configChanges="orientation|screenSize|keyboardHidden"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>

使用这种方法的话,SplashActivity中的setContentView()可以去掉了

setContentView(R.layout.activity_splash);

在这里插入图片描述

  • 使用透明主题android:Theme.Translucent.NoTitleBar.Fullscreen
    使用透明主题,点图标后在桌面上要等上那么一小会儿,然后是整个界面才会一下子显示出来,让人误以为慢的是桌面launcher而不是应用
<style name="SplashTheme"parent="android:Theme.Translucent.NoTitleBar.Fullscreen"></style>

使用同上

在这里插入图片描述
更多优化

https://blog.csdn.net/u010356768/article/details/89632869

这篇关于Android启动界面SplashActivity的实现方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/982244

相关文章

Qt 设置软件版本信息的实现

《Qt设置软件版本信息的实现》本文介绍了Qt项目中设置版本信息的三种常用方法,包括.pro文件和version.rc配置、CMakeLists.txt与version.h.in结合,具有一定的参考... 目录在运行程序期间设置版本信息可以参考VS在 QT 中设置软件版本信息的几种方法方法一:通过 .pro

Java继承映射的三种使用方法示例

《Java继承映射的三种使用方法示例》继承在Java中扮演着重要的角色,它允许我们创建一个类(子类),该类继承另一个类(父类)的所有属性和方法,:本文主要介绍Java继承映射的三种使用方法示例,需... 目录前言一、单表继承(Single Table Inheritance)1-1、原理1-2、使用方法1-

Android DataBinding 与 MVVM使用详解

《AndroidDataBinding与MVVM使用详解》本文介绍AndroidDataBinding库,其通过绑定UI组件与数据源实现自动更新,支持双向绑定和逻辑运算,减少模板代码,结合MV... 目录一、DataBinding 核心概念二、配置与基础使用1. 启用 DataBinding 2. 基础布局

Android ViewBinding使用流程

《AndroidViewBinding使用流程》AndroidViewBinding是Jetpack组件,替代findViewById,提供类型安全、空安全和编译时检查,代码简洁且性能优化,相比Da... 目录一、核心概念二、ViewBinding优点三、使用流程1. 启用 ViewBinding (模块级

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,

SpringBoot中使用Flux实现流式返回的方法小结

《SpringBoot中使用Flux实现流式返回的方法小结》文章介绍流式返回(StreamingResponse)在SpringBoot中通过Flux实现,优势包括提升用户体验、降低内存消耗、支持长连... 目录背景流式返回的核心概念与优势1. 提升用户体验2. 降低内存消耗3. 支持长连接与实时通信在Sp

Conda虚拟环境的复制和迁移的四种方法实现

《Conda虚拟环境的复制和迁移的四种方法实现》本文主要介绍了Conda虚拟环境的复制和迁移的四种方法实现,包括requirements.txt,environment.yml,conda-pack,... 目录在本机复制Conda虚拟环境相同操作系统之间复制环境方法一:requirements.txt方法

Nginx 重写与重定向配置方法

《Nginx重写与重定向配置方法》Nginx重写与重定向区别:重写修改路径(客户端无感知),重定向跳转新URL(客户端感知),try_files检查文件/目录存在性,return301直接返回永久重... 目录一.try_files指令二.return指令三.rewrite指令区分重写与重定向重写: 请求

MySQL 打开binlog日志的方法及注意事项

《MySQL打开binlog日志的方法及注意事项》本文给大家介绍MySQL打开binlog日志的方法及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录一、默认状态二、如何检查 binlog 状态三、如何开启 binlog3.1 临时开启(重启后失效)