设置android应用闪屏图片_android 闪屏设计

本文介绍了如何在Android中创建一个闪屏界面。通过新建项目、添加资源图片、编写布局文件和逻辑代码,实现了3秒后自动跳转或点击菜单键直接跳过闪屏的效果。在代码中详细解析了关键变量和函数的作用。
摘要由CSDN通过智能技术生成

网络111 徐京浩

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

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

2、添加资源图片:

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

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

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

该布局内容如下所示:

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:gravity="center">

android:id="@+id/img1"

android:src="@drawable/splash"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

>

从上述代码中可以看出,界面布局采用的是线性布局(在后面会专门介绍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

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文件中部分内容如下:

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

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

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

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

6、键盘事件处理

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

7、运行效果

闪屏界面

3秒过后进入主界面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值