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

相关文章

Python如何调用另一个类的方法和属性

《Python如何调用另一个类的方法和属性》在Python面向对象编程中,类与类之间的交互是非常常见的场景,本文将详细介绍在Python中一个类如何调用另一个类的方法和属性,大家可以根据需要进行选择... 目录一、前言二、基本调用方式通过实例化调用通过类继承调用三、高级调用方式通过组合方式调用通过类方法/静

基于Python实现温度单位转换器(新手版)

《基于Python实现温度单位转换器(新手版)》这篇文章主要为大家详细介绍了如何基于Python实现温度单位转换器,主要是将摄氏温度(C)和华氏温度(F)相互转换,下面小编就来和大家简单介绍一下吧... 目录为什么选择温度转换器作为第一个项目项目概述所需基础知识实现步骤详解1. 温度转换公式2. 用户输入处

MySQL实现多源复制的示例代码

《MySQL实现多源复制的示例代码》MySQL的多源复制允许一个从服务器从多个主服务器复制数据,这在需要将多个数据源汇聚到一个数据库实例时非常有用,下面就来详细的介绍一下,感兴趣的可以了解一下... 目录一、多源复制原理二、多源复制配置步骤2.1 主服务器配置Master1配置Master2配置2.2 从服

Java实现TXT文件导入功能的详细步骤

《Java实现TXT文件导入功能的详细步骤》在实际开发中,很多应用场景需要将用户上传的TXT文件进行解析,并将文件中的数据导入到数据库或其他存储系统中,本文将演示如何用Java实现一个基本的TXT文件... 目录前言1. 项目需求分析2. 示例文件格式3. 实现步骤3.1. 准备数据库(假设使用 mysql

java -jar example.jar 产生的日志输出到指定文件的方法

《java-jarexample.jar产生的日志输出到指定文件的方法》这篇文章给大家介绍java-jarexample.jar产生的日志输出到指定文件的方法,本文给大家介绍的非常详细,对大家的... 目录怎么让 Java -jar example.jar 产生的日志输出到指定文件一、方法1:使用重定向1、

C#控制台程序同步调用WebApi实现方式

《C#控制台程序同步调用WebApi实现方式》控制台程序作为Job时,需同步调用WebApi以确保获取返回结果后执行后续操作,否则会引发TaskCanceledException异常,同步处理可避免异... 目录同步调用WebApi方法Cls001类里面的写法总结控制台程序一般当作Job使用,有时候需要控制

Java报错:org.springframework.beans.factory.BeanCreationException的五种解决方法

《Java报错:org.springframework.beans.factory.BeanCreationException的五种解决方法》本文解析Spring框架中BeanCreationExce... 目录引言一、问题描述1.1 报错示例假设我们有一个简单的Java类,代表一个用户信息的实体类:然后,

SpringBoot集成P6Spy的实现示例

《SpringBoot集成P6Spy的实现示例》本文主要介绍了SpringBoot集成P6Spy的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录本节目标P6Spy简介抛出问题集成P6Spy1. SpringBoot三板斧之加入依赖2. 修改

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详

Python实现数据可视化图表生成(适合新手入门)

《Python实现数据可视化图表生成(适合新手入门)》在数据科学和数据分析的新时代,高效、直观的数据可视化工具显得尤为重要,下面:本文主要介绍Python实现数据可视化图表生成的相关资料,文中通过... 目录前言为什么需要数据可视化准备工作基本图表绘制折线图柱状图散点图使用Seaborn创建高级图表箱线图热