Android 如何实现欢迎界面(Splash Screen)

2023-12-28 17:08

本文主要是介绍Android 如何实现欢迎界面(Splash Screen),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

启动界面  先记一下  

代码报错:SegmentFault


参考文章:http://blog.csdn.net/shaoduo/article/details/48351585  

安卓判断是否首次进入app,通过判断跳转欢迎引导界面和主界面

http://www.jb51.net/article/36190.htm

Android笔记之:App应用之启动界面SplashActivity的使用


http://blog.csdn.net/xueshanhaizi/article/details/51262528

 Android应用启动界面分析(Starting Window)


http://blog.csdn.net/qq_25047355/article/details/55260980

详解安卓从图表icon点击到APP启动界面加载流程

http://www.jb51.net/article/36190.htm

Android笔记之:App应用之启动界面SplashActivity的使用


https://www.cnblogs.com/xiongbo/archive/2011/05/17/splash.html

创建Android启动界面


https://www.jianshu.com/p/33a798ac3298  你所不知道的。。。


贴:

 MainActivity

public class MainActivity extends Activity {private ImageView imageView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);imageView = findViewById(R.id.image);Intent intent = getIntent();if (intent!=null) {//注意Intent传递对象的方式Bitmap bitmap = intent.getParcelableExtra("Image");imageView.setImageBitmap(bitmap);}}
}
ancivity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="net.lm.fire_controller.MainActivity"><ImageViewandroid:id="@+id/image"android:layout_width="fill_parent"android:layout_height="fill_parent" /></LinearLayout>

SplashScreenActivity
package net.lm.fire_controller;import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;/*** Created by Administrator on 2018/1/11.*/public class SplashScreenActivity extends Activity {private static final String url = "http://img.pconline.com.cn/images/upload/upc/tx/wallpaper/1304/30/c0/20394669_1367251284721_320x480.jpg";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.splash_screen);new FetchDataTask().execute(url);}public class FetchDataTask extends AsyncTask<String,Void,Bitmap> {//执行前调用protected  void onPreExecut(){super.onPreExecute();}//执行后台任务@Overrideprotected Bitmap doInBackground(String... strings) {Bitmap bitmap = null;try {//通过传入的图片地址,获取图片HttpURLConnection connection = (HttpURLConnection) (new URL(strings[0])).openConnection();InputStream is = connection.getInputStream();bitmap = BitmapFactory.decodeStream(is);} catch (IOException e) {e.printStackTrace();}return bitmap;}//任务完成时调用@Overrideprotected void onPostExecute(Bitmap result) {super.onPostExecute(result);//讲获取的数据通过Intent传送给MainActivityIntent intent = new Intent(SplashScreenActivity.this,MainActivity.class);//注意,intent传递图片时,图片对象大小不应该超过40kintent.putExtra("Image",result);startActivity(intent);//启动MainActivity后销毁自身finish();}}
}

splash_screen.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:orientation="vertical"><ImageViewandroid:id="@+id/appImage"android:src="@mipmap/personal_logo"android:layout_width="wrap_content"android:layout_height="wrap_content" /><TextViewandroid:gravity="center"android:text="Welcome to MS_Movie"android:layout_marginTop="15dp"android:textSize="30sp"android:textColor="#00ACED"android:layout_width="wrap_content"android:layout_height="wrap_content" />
</LinearLayout>

项目清单文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="net.lm.fire_controller" > <uses-permission android:name="android.permission.INTERNET"/><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=".MainActivity" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>

这里附一张,老师给的提醒:

/**  * 包名:net.hw.driver_test.ui* 类名:SplashScreenActivity* 描述:启动界面* 作者:华卫  * 日期:2017年1月4日  */
package net.hw.driver_test.ui;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import net.hw.driver_test.R;public class SplashScreenActivity extends Activity {	/*** 图标标签*/private ImageView ivIcon;/*** 延迟时间*/private static final int DELAY_TIME = 4000;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 利用布局资源文件设置用户界面setContentView(R.layout.activity_splash_screen);// 通过资源标识获得控件实例ivIcon = (ImageView) findViewById(R.id.iv_icon);// 加载动画配置文件,启动动画ivIcon.startAnimation(AnimationUtils.loadAnimation(this, R.anim.animator));		// 利用消息处理器实现延迟跳转到登录窗口		new Handler().postDelayed(new Runnable() {@Overridepublic void run() {// 启动登录窗口startActivity(new Intent(SplashScreenActivity.this, LoginActivity.class));// 关闭启动画面finish(); }}, DELAY_TIME);}
}

后续(过了一个下午):

查看了一些资料,如果按照原本计划,应该是一个启动页面后再弹出登录注册框。。 为了多方面的考虑,想了一下,如果今后有类似的app做引导页,其实也是可以采用  三张图片滚动的形式,再跳转主界面,这样也是可以的。

一张启动页面用Splash Screen可以做出来,控制持续的时间 再跳转可以的。

我找到了简书上用RxJava做的引导页,尝试了一下,感觉用户体验应该相对来说也是可以,只是再加长了进入主界面的时间,多了缓冲和视觉上的效果。


这是现在做的一个实训项目,但是目前来说写这篇文章意义不大,只是一个拓展吧。以作今后开发之需。

RxJava实践之打造酷炫启动页

两步打造华丽丽的Android引导页(用到RxJava)

Android启动页优化,去黑屏实现秒启动

这是代码地址


这篇关于Android 如何实现欢迎界面(Splash Screen)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3

Java实现删除文件中的指定内容

《Java实现删除文件中的指定内容》在日常开发中,经常需要对文本文件进行批量处理,其中,删除文件中指定内容是最常见的需求之一,下面我们就来看看如何使用java实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

PostgreSQL中MVCC 机制的实现

《PostgreSQL中MVCC机制的实现》本文主要介绍了PostgreSQL中MVCC机制的实现,通过多版本数据存储、快照隔离和事务ID管理实现高并发读写,具有一定的参考价值,感兴趣的可以了解一下... 目录一 MVCC 基本原理python1.1 MVCC 核心概念1.2 与传统锁机制对比二 Postg

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

C++中零拷贝的多种实现方式

《C++中零拷贝的多种实现方式》本文主要介绍了C++中零拷贝的实现示例,旨在在减少数据在内存中的不必要复制,从而提高程序性能、降低内存使用并减少CPU消耗,零拷贝技术通过多种方式实现,下面就来了解一下... 目录一、C++中零拷贝技术的核心概念二、std::string_view 简介三、std::stri

C++高效内存池实现减少动态分配开销的解决方案

《C++高效内存池实现减少动态分配开销的解决方案》C++动态内存分配存在系统调用开销、碎片化和锁竞争等性能问题,内存池通过预分配、分块管理和缓存复用解决这些问题,下面就来了解一下... 目录一、C++内存分配的性能挑战二、内存池技术的核心原理三、主流内存池实现:TCMalloc与Jemalloc1. TCM

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1