启动界面Splash Screen在应用程序是很常用的,往往在启动界面中显示产品Logo、公司Logo或者开发者信息,如果应用程序启动时间比较长,那么启动界面就是一个很好的东西,可以让用户耐心等待这段枯燥的时间。

Android 应用程序创建一个启动界面Splash Screen非常简单。比如创建一个工程MySample,主Acitity就叫MySample,创建另一个Activity叫 SplashScreen,用于显示启动界面,资源文件为splash.xml。

SplashScreen的代码如下:
package com.ctoof.android;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.MotionEvent;

public class SplashScreen extends Activity {
    protected boolean _active = true;
    protected int _splashTime = 5000;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);
        
        Thread splashTread = new Thread() {
            @Override
            public void run() {
                try {
                    int waited = 0;
                    while(_active && (waited < _splashTime)) {
                        sleep(100);
                        if(_active) {
                            waited += 100;
                        }
                    }
                } catch(InterruptedException e) {
                    // do nothing
                } finally {
                    finish();
                    // 启动主应用
                    startActivity(new Intent("com.ctoof.android.MySample.MyApp"));
                    stop();
                }
            }
        };
        splashTread.start();
    }
    
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            _active = false;
        }
        return true;
    }
}
然后在AndroidMainfest.xml中修改代码如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.ctoof.android"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".SplashScreen"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".MyApp">
            <intent-filter>
                <action android:name=" com.ctoof.android. MySample.MyApp " />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    </application>
    <uses-sdk android:minSdkVersion="4" />
</manifest>

在这里负责注册两个活动。把负责管理启动界面Splash Screen的活动Activity作为应用程序的主活动,然后在SplashScreen中负责启动MyApp。

new Handler().postDelayed(new Runnable(){   // 为了减少代码使用匿名Handler创建一个延时的调用
            public void run() {  
                Intent i = new Intent(SplashScreen.this, Main.class);    //通过Intent打开最终真正的主界面Main这个Activity
                SplashScreen.this.startActivity(i);    //启动Main界面
                SplashScreen.this.finish();    //关闭自己这个开场屏
            }  
        }, 5000);   //5秒,够用了吧

在Activity中的onCreate方法中,初始化并开始Timer:
1    timer = new Timer(true);
2    startTime = System.currentTimeMillis();
3    timer.schedule(task, 0, 1);
startTime是开始时间,要判断时间差是否满足设定的时间。下面是TimerTask的代码:
01    private final TimerTask task = new TimerTask() {
02                    @Override
03                    public void run() {
04                           if (task.scheduledExecutionTime() - startTime == 1000 || !_active) {
05                                             Message message = new Message();  
06                                             message.what = 0;
07                                             timerHandler.sendMessage(message);
08                                             timer.cancel();
09                                             this.cancel();
10                                          }
11    
12                    }
13            };
还有handler的代码:
01    private final Handler timerHandler = new Handler() {
02                    public void handleMessage(Message msg) {
03                            switch (msg.what) {  
04                case 0:
05                 
06                        SplashScreen.this.finish();
07                            //start new activity here
08                        break;
09                            }  
10                            super.handleMessage(msg);  
11                    }
12            };

1    @Override
2        public boolean onTouchEvent(MotionEvent event) {
3            if (event.getAction() == MotionEvent.ACTION_DOWN) {
4                _touched = false;
5            }
6            return true;
7        }

在显示Splash Screen的过程中,如果触摸了屏幕,会直接跳过Splash Screen的,给用户以更高的体验。

这样一个基本的Splash就实现了。

转载于:https://www.cnblogs.com/jiezzy/archive/2012/05/09/2492166.html

如何创建启动界面Splash Screen相关推荐

  1. android安装apk时启动一个服务器,详解Android中App的启动界面Splash的编写方法

    一.Splash界面的作用用来展现产品的Logo 应用程序初始化的操作 检查应用程序的版本 检查当前应用程序是否合法注册 二.界面的xml定义写一个布局背景设置为产品的logo图片,再添加一个text ...

  2. ionic3 自动创建启动背景splash以及图标icon

    在新建的项目文件夹下的 resources下就是我们放置图标以及启动背景图片的位置了. 如果现在我们想生成自己的图片的启动背景以及图片,我们需要把resources下的 icon.png 以及spla ...

  3. PyQt5中QSplashScreen实现软件启动界面

    直接上代码 from PyQt5 import QtCore, QtWidgets from PyQt5.QtGui import * from PyQt5.QtWidgets import * im ...

  4. android oreo 开机动画,Android O添加了一个 Splash Screen API帮助简化启动屏制作

    大多数开发者对闪屏(splash screen)都持不同的态度.一些人支持用闪屏隐藏app的加载,然后自然过渡到主界面,而另一些人认为闪屏不管是对用户还是开发者都是浪费时间.谷歌在这个问题上的立场也是 ...

  5. Android启动界面优化技巧-Splash Screens的正确方式

    备注:这里是开发跨平台App时,适配Android启动屏幕,主要为了防止白屏.玩Android开源App 往往我们在开发Android的时候会出现白屏等等,主要原因就是启动时需要加载的资源过多,从而影 ...

  6. cordova 项目添加splash启动界面

    需求:cordova项目启动添加启动界面,并在设备初始化完成后自动隐藏splash 1.新建项目 cordova create Mypro com.test.pro proName 2.添加平台 cd ...

  7. Android Studio 制作APP启动界面(Splash)

    最近又开始学习Android studio 了,在制作APP时,都有一个启动的界面,看上去美观且实用(也可以作为以后的广告位← 那怎样制作呢? 第一步:新建Splash 如图,新建一个Empty Ac ...

  8. android studio 启动画面,Android Studio 利用Splash制作APP启动界面的方法

    public class SplashActivity extends Activity { // private final int SPLASH_DISPLAY_LENGHT = 2000; // ...

  9. 实现在Android开发中的Splash Screen开场屏的效果

    很多网友可能发现近期Tencent推出的手机QQ Android版包含了一个开场屏Splash Screen载入效果,通常游戏或大型软件打开时可能需要一个释放解析资源的过程,需要一个前台的动画播放和后 ...

最新文章

  1. 立志打破日企垄断,ISP要被取代了吗?
  2. 六 Lync Server 2013 部署指南-OWA服务器部署
  3. 一道Java面试题目——随想+心得
  4. Cassandra 单机入门例子——有索引
  5. 第8章 线性时间排序
  6. servlet 配置 使用_配置HTTPS以与Servlet一起使用
  7. 关于非root用户配置ssh运行环境
  8. 解决报错 javax.persistence.TransactionRequiredException: Executing an update/delete query
  9. Android usb 权限广播,android10.0 USB弹窗权限流程解析
  10. 2014年12月26日
  11. flask-mail异步发送邮件_使用 python 发送邮件
  12. 【后空翻机器人代码】斯坦福后空翻机器人设计、代码全开源,成本降至3000美元,人人皆可DIY|湾区人工智能...
  13. 护士如何预防职业病:下肢静脉曲张-健康小常识
  14. 百度地图java批量获得经纬度_从百度地图API接口批量获取地点的经纬度
  15. php采集正则,php不用正则采集速度探究总结
  16. OPERA团队一 开功能配参数
  17. 关于移植人脸识别功能到linux开发板
  18. 构造图片木马,绕过文件内容检测上传木马
  19. VMware提示“指定的文件不是虚拟磁盘“或“The file specified is not a virtual disk”打不开
  20. 上海还有哪些比较好的IB学校?

热门文章

  1. ST IKS01A1 驱动程序分析
  2. bzoj 2653 middle (可持久化线段树)
  3. SQL学习笔记:库和表的创建
  4. [Ext JS 4] 实战Chart 协调控制(单一的坐标,两个坐标)
  5. 借助Glances Monitor,密切关注你的系统
  6. 面临找工作,要记住给自己的这些话。
  7. php 连接hadoop hdfs,Hadoop HDFS操作
  8. python写完程序保存_Python学习笔记——文件处理
  9. 2021计算机技能高考考纲,2021年湖北省技能高考技能考试大纲(机械类).pdf
  10. java语言的多态性及特点_Java中的方法的多态性有两种形式:( )和( )。_学小易找答案...