Android闪屏示例程序

 用过手机QQ的基本上都知道,刚启动程序时候会在一个界面停留一会,按任意键的就直接跳过,这就是所谓的闪屏。那么,在Android中怎样实现这样的效果呢?

 1、新建一个Android项目,命名为SplashyDemo,结构如下所示

2、 添加资源图片

首先我们得有闪屏时候显示的图片资源文件,并将图片放在res/drawable目录下,命名为splash.jpg:

这时候会在R类中自动添加资源文件对应的ID,如下所示:

3、编写闪屏的界面布局文件,放在res/layout目录下,如下图

该布局内容如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center">
<ImageView
android:id="@+id/img1"
android:src="@drawable/splash"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
</ImageView>
</LinearLayout>

从上述代码中可以看出,界面布局采用的是线性布局(在后面会专门介绍Android中的各种界面布局的),并且子控件仅仅是ImageView用来显示图片。如果你在运行时发现图片偏左偏右或者被拉伸等问题,还请仔细参考下上面代码中的一些布局设置细节,如LinearLayout的gravity属性设置为center以及宽度和高度设置为撑满父容器的模式,ImageView控件的宽度与高度设置为适合子控件模式,并且其数据源通过src属性绑定到drawable

4、编写闪屏界面的逻辑代码

逻辑代码如下:

package cnblogs.com;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;

public class SplashyDemo extends Activity {

    private long m_dwSplashTime=3000;
    private boolean m_bPaused=false;
    private boolean m_bSplashActive=true;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);

        Thread splashTimer=new Thread()
        {
            public void run(){
                try{
                    //wait loop
                    long ms=0;
                    while(m_bSplashActive && ms<m_dwSplashTime){
                        sleep(100);

                        if(!m_bPaused)
                            ms+=100;
                    }

                    startActivity(new Intent("com.google.app.splashy.CLEARSPLASH"));
                }
                catch(Exception ex){
                    Log.e("Splash",ex.getMessage());
                }
                finally{
                    finish();
                }
            }
        };
        splashTimer.start();
    }

    @Override
    protected void onPause() {
        super.onPause();
        m_bPaused=true;
    }

    @Override
    protected void onResume() {
        super.onResume();
        m_bPaused=false;
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        super.onKeyDown(keyCode, event);
        switch(keyCode){
        case KeyEvent.KEYCODE_MENU:
            m_bSplashActive=false;
            break;
        case KeyEvent.KEYCODE_BACK:
            /*两种退出方法*/
            /* System.exit(0);*/
            /* android.os.Process.killProcess(android.os.Process.myPid());*/
            android.os.Process.killProcess(android.os.Process.myPid());
            break;
        default:
            break;
        }
        return true;
    }
}

以上代码参看的是Android Essentials一书, 笔者看的是英文版,对于一些英语不太好的朋友,笔者觉的代为分析下这个示例还是有些意义的。

1)变量解释:

Ø m_dwSplashTime:long 类型,为闪屏界面停留的时间,这儿设置为3000也就是3秒

Ø m_Paused: bool 类型,设置该变量可以使得程序暂停在闪屏界面

Ø m_bSplashActive:bool类型,设置该变量可以跳过闪屏,从而快速竟如主程序界面

2)程序结构解释:

Ø SplashyDemo继承自Activity,且是程序启动的第一个界面(查看),所以要实现闪屏,我们需要开启一个线程,以便在3秒钟之后进入主界面。这些主要有一个while循环来实现

Ø 在3秒钟结束或者用户选择跳过闪屏后,程序会调用startActivity函数来跳到主界面,传入该函数的参数是一个"com.google.app.splashy.CLEARSPLASH"的intent对象。至于什么是Intent对象,这儿简单的介绍下。Intent对象主要是多个Activity对象之间传递信息、交流的一个对象。并且,当startActivity函数被

调用的时候,Android会搜索所有的描述性文件(manifests文件)直到找到intent Action是"com.google.app.splashy.CLEARSPLASH"的节点。如工程中AndroidManifest.xml文件中部分内容如下:

<activity android:name=".MainMenu" android:label="@string/main_name">

<intent-filter>

<action android:name="com.google.app.splashy.CLEARSPLASH"></action>

<category android:name="android.intent.category.DEFAULT"></category>

</intent-filter>

</activity>

5、重写下SplashyDmeo中OnPaused和OnResume函数

当程序Pause或者Resume的时候,再稍微做下处理:

1)当程序Pause时候,设置m_paused=true,从而使得程序暂停

2) 当程序Resume的时候,要设置m_paused=false,从而使得程序恢复正常运行

6、 键盘事件处理

处理键盘事件只需重写下继承自Activity类的onKeyDown函数即可,从示例程序中可以看出,当我们按下Menu键的话,直接跳过闪屏进入主界面;若按 下Back键的话,则直接退出主程序。

7、运行效果

闪屏界面

3秒过后进入主界面

示例程序源码下载:

/Files/royenhome/SplashyDemo.rar

时间: 2024-12-02 16:50:42

Android闪屏示例程序的相关文章

Android闪屏效果实现方法_Android

本文实例讲述了Android闪屏效果实现方法.分享给大家供大家参考,具体如下: 闪屏,就是SplashScreen,也可以说是启动画面,就是启动的时候,闪(展示)一下,持续数秒后,自动关闭. android的实现非常简单,使用Handler对象的postDelayed方法就可以实现.在这个方法里传递一个Runnable对象和一个延迟的时间.该方法实现了一个延迟执行的效果,延迟的时间由第2个参数指定,单位是毫秒.第一个参数是Runnable对象,里面包含了延迟后需要执行的操作.demo代码如下:

Android闪屏效果实现方法

本文实例讲述了Android闪屏效果实现方法.分享给大家供大家参考,具体如下: 闪屏,就是SplashScreen,也可以说是启动画面,就是启动的时候,闪(展示)一下,持续数秒后,自动关闭. android的实现非常简单,使用Handler对象的postDelayed方法就可以实现.在这个方法里传递一个Runnable对象和一个延迟的时间.该方法实现了一个延迟执行的效果,延迟的时间由第2个参数指定,单位是毫秒.第一个参数是Runnable对象,里面包含了延迟后需要执行的操作.demo代码如下:

android实现Splash闪屏效果示例_Android

本文实例讲述了android实现Splash闪屏效果的方法.分享给大家供大家参考,具体如下: Java代码: public class Splash extends Activity{ private final int SPLASH_DISPLAY_LENGHT = 1000; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCre

Android实现闪屏及注册和登录界面之间的切换效果_Android

在没给大家介绍正文之前先给大家说下实现思路: 先分别实现闪屏.注册界面.登录界面的活动,再用Intent将相关的活动连接起来,实现不同活动之间的跳转.此次试验代码较多,我只列出主要代码,详细的代码可用底部的下载链接下载. 一.实验效果图: 二.主要代码: (1)WelcomeActivity.Java(这部分代码实现的是第一页的欢迎页面) package com.example.flashscreendemo; import android.app.Activity; import androi

Android 实现闪屏页和右上角的倒计时跳转实例代码_Android

以前编程的时候,遇到倒计时的功能时,经常自己去写,但其实Android已经帮封装好了一个倒计时类CountDownTimer,其实是将后台线程的创建和Handler队列封装成为了一个方便的类调用. 闪屏页用到了handler和CountDownTimer类,还需配置一下Activity的主题,这里是:android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 全屏主题的意思. 给大家展示下效果图: 代码如下所示: package

Android实现的截屏小程序示例_Android

本文实例讲述了Android实现的截屏小程序.分享给大家供大家参考,具体如下: 先看截图,不过这个截屏还不够完整,头上的statusbar没有,呈黑色. 多按了几次,就成这样了,呵呵. package com.test; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Bitmap.Config; import

android实现Splash闪屏效果示例

本文实例讲述了android实现Splash闪屏效果的方法.分享给大家供大家参考,具体如下: Java代码: public class Splash extends Activity{ private final int SPLASH_DISPLAY_LENGHT = 1000; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCre

Android实现的截屏小程序示例

本文实例讲述了Android实现的截屏小程序.分享给大家供大家参考,具体如下: 先看截图,不过这个截屏还不够完整,头上的statusbar没有,呈黑色. 多按了几次,就成这样了,呵呵. package com.test; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Bitmap.Config; import

《Android应用开发攻略》——2.6 在Android中创建闪屏

2.6 在Android中创建闪屏 Rachee Singh2.6.1 问题 你打算创建应用程序加载时显示的闪屏(splash screen).2.6.2 解决方案 你可以采用活动或者对话框的形式构建闪屏.因为闪屏的目标在几秒钟之内就能完成,所以它可以在短时间或者单击闪屏上的一个按钮之后消失.2.6.3 讨论 闪屏发明于PC时代,最初是在PC速度较慢的时候遮盖缓慢构建的GUI.供应商则将闪屏用于品牌宣传.但是在移动领域中,最长的应用程序启动时间可能少于1秒,人们开始认为闪屏已经不合时宜.在 eH