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

相关文章

基于SpringBoot+Mybatis实现Mysql分表

《基于SpringBoot+Mybatis实现Mysql分表》这篇文章主要为大家详细介绍了基于SpringBoot+Mybatis实现Mysql分表的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录基本思路定义注解创建ThreadLocal创建拦截器业务处理基本思路1.根据创建时间字段按年进

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Java枚举类实现Key-Value映射的多种实现方式

《Java枚举类实现Key-Value映射的多种实现方式》在Java开发中,枚举(Enum)是一种特殊的类,本文将详细介绍Java枚举类实现key-value映射的多种方式,有需要的小伙伴可以根据需要... 目录前言一、基础实现方式1.1 为枚举添加属性和构造方法二、http://www.cppcns.co

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

Java实现文件图片的预览和下载功能

《Java实现文件图片的预览和下载功能》这篇文章主要为大家详细介绍了如何使用Java实现文件图片的预览和下载功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... Java实现文件(图片)的预览和下载 @ApiOperation("访问文件") @GetMapping("

使用Sentinel自定义返回和实现区分来源方式

《使用Sentinel自定义返回和实现区分来源方式》:本文主要介绍使用Sentinel自定义返回和实现区分来源方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Sentinel自定义返回和实现区分来源1. 自定义错误返回2. 实现区分来源总结Sentinel自定