首页 > 编程语言 >Android闪屏示例程序

Android闪屏示例程序

时间:2022-10-06 11:32:31浏览次数:59  
标签:界面 示例 程序 闪屏 layout Android android


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

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

Android闪屏示例程序_encoding

2、 添加资源图片

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

Android闪屏示例程序_exception_02

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

Android闪屏示例程序_exception_03

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

Android闪屏示例程序_layout_04

该布局内容如下所示:





<?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、编写闪屏界面的逻辑代码

Android闪屏示例程序_encoding_05

逻辑代码如下:


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、运行效果

Android闪屏示例程序_layout_06

闪屏界面

Android闪屏示例程序_encoding_07

3秒过后进入主界面

示例程序源码下载:

​/Files/royenhome/SplashyDemo.rar​

标签:界面,示例,程序,闪屏,layout,Android,android
From: https://blog.51cto.com/jdsjlzx/5733509

相关文章

  • Android实现图片倒影效果
    ​​android倒影实现抖动的镜面效果​​​​http://clareshao.iteye.com/blog/1419695​​android中的gallery的一个样式,具有倒影效果。左右滑动也不错。​​http://down......
  • Android开发--构建项目安装包APK(debug版)
    1.build→BuildAPK(s),点击即可构建2.点击日志可以查看构建情况3.点击locate即可进入debug文件夹4.也可以在构建完成后直接按照路径找到debug文件夹其中apk文件即所需安装......
  • Android类加载流程
    背景由于前前前阵子写了个壳,得去了解类的加载流程,当时记了一些潦草的笔记。这几天把这些东西简单梳理了一下,本文分析的代码基于Android8.1.0源码。流程分析从loadClass......
  • 共轭梯度法示例代码
    当初第一次推共轭梯度法公式,觉得有点难,现在再回头看,共轭梯度法真是个漂亮的代码。最近写了个示例代码,录在这里吧。参考文献:[1]马红儒,“计算物理讲义”1.算法Ref.[1]......
  • Tubian Linux 0.45,兼容Windows和Android的国产Linux系统!
    Github主页(提供下载):https://github.com/jinshulumengchuang/Tubian-Linux123网盘下载:https://www.123pan.com/s/XjkKVv-JO9Uvhttps://www.123pan.com/s/XjkKVv-BO9Uvhtt......
  • 关于Android开发工具的下载之ADT篇
    ADT的下载首先可以选择下面推荐的两个网站去下载相应的安装包,网址如下:http://tools.android-studio.org/index.php/adt-bundle-plugin或者http://www.androiddevtools.......
  • 面向初学者的 Android 应用开发基础知识
    Android是一个基本上为手机构建的操作系统。它基于LinuxKernel和其他开源软件,由Google开发。它用于智能手机和平板电脑等触摸屏移动设备。但现在这些都用于AndroidAuto......
  • Android系统10 RK3399 init进程启动(四十) 开机自启动脚本init.rc执行逻辑框架
    说明系统:Android10.0设备:FireFlyRK3399(ROC-RK3399-PC-PLUS)前言这个章节我们开始学习新的知识点,init.rc相关概念,也就是Android开机自启动的脚本,这个脚本能启动shell脚......
  • androidmanifest.xml 反编译
    androidmanifest.xml反编译去除更新只修改androidmanifest.xml内容解压apk文件后得到这个文件androidmanifest.xmlwindwos安装java环境官网java环境安装安装好后......
  • Springboot接收请求参数示例
    packagecom.example.demo.controller;importcom.example.demo.model.User;importorg.springframework.web.bind.annotation.*;importorg.springframework.web.mult......