(一)用2个Activity实现

用Handler对象的postDelayed方法来实现延迟跳转的目的。

补充:Handler的常用方法:

// 立即执行Runnable对象

public final boolean post(Runnable r);

// 在指定的时间(uptimeMillis)执行Runnable对象

public final boolean postAtTime(Runnable r, long uptimeMillis);

// 在指定的时间间隔(delayMillis)执行Runnable对象

public final boolean postDelayed(Runnable r, long delayMillis);

1、activity_splash.xml:

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:src="@drawable/ic_launcher" />

2、activity_main.xml:

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="这里是主界面" />

3、SplashActivity:

package com.example.splashtest;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.os.Handler;

import android.view.Window;

public class SplashActivity extends Activity {

private final int SPLASH_DISPLAY_LENGHT = 3000;

private Handler handler;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

getWindow().requestFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.activity_splash);

handler = new Handler();

// 延迟SPLASH_DISPLAY_LENGHT时间然后跳转到MainActivity

handler.postDelayed(new Runnable() {

@Override

public void run() {

Intent intent = new Intent(SplashActivity.this,

MainActivity.class);

startActivity(intent);

SplashActivity.this.finish();

}

}, SPLASH_DISPLAY_LENGHT);

}

}

4、MainActivity:

package com.example.splashtest;

import android.app.Activity;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

public class MainActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

}

6、修改AndroidManifest.xml文件:

...

android:name=".SplashActivity"

android:label="splash" >

android:name=".MainActivity"

android:label="@string/app_name" >

...

7、在SplashActivity中禁用返回键:

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

if(keyCode == KeyEvent.KEYCODE_BACK){

return true;

}

return super.onKeyDown(keyCode, event);

}

(二)用一个Activity实现

主要利用控件的隐藏来实现。

1、xml文件:

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >

android:id="@+id/splash_lt"

android:layout_width="match_parent"

android:layout_height="match_parent" >

android:layout_width="match_parent"

android:layout_height="match_parent"

android:src="@drawable/ic_launcher" />

android:id="@+id/main_tv"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="这是主界面" />

2、MainActivity

package com.example.splashtest2;

import android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.os.SystemClock;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.Window;

import android.widget.LinearLayout;

public class MainActivity extends Activity {

private final int STOP_SPLASH = 0;

private final int SPLASH_TIME = 3000;

private LinearLayout splashLt;

private Handler splashHandler = new Handler() {

public void handleMessage(Message msg) {

switch (msg.what) {

case STOP_SPLASH:

splashLt.setVisibility(View.GONE);

break;

default:

break;

}

super.handleMessage(msg);

}

};

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

getWindow().requestFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.activity_main);

splashLt = (LinearLayout) findViewById(R.id.splash_lt);

Message msg = new Message();

msg.what = STOP_SPLASH;

// 注:这里必须用延迟发送消息的方法,否则ImageView不会显示出来

splashHandler.sendMessageDelayed(msg, SPLASH_TIME);

}

}

(三)小结

建议使用第一种方法,用两个Activity实现,因为MainActivity中的代码不宜过多。

随机推荐

iOS开发之远程推送

说到远程推送,应该用的也挺多的,今天就基于SEA的云推送服务,做一个推送的小demo,来了解一下iOS中的远程推送是怎么一回事儿,首先你得有苹果的开发者账号,好咸蛋也差不多了,主要内容走起. 一.准备 ...

【&】位与运算符【|】位或运算符之权限控制算法

[&]位与运算符: 按位与运算符"&"是双目运算符. 其功能是参与运算的两数各对应的二进位相与.只有对应的两个二进位均为1时,结果位才为1 ,否则为0.参与运算的数 ...

Broadmann分区

来源: http://blog.sina.com.cn/s/blog_60a751620100k2hj.html Brodmann areas Name 中文名 Function 1 Somatose ...

osg学习示例之遇到问题四骨骼动画编译osgCal

osg学习示例之遇到问题四骨骼动画编译osgCal 转自:http://blog.csdn.net/wuwangrun/article/details/8239451 今天学到书

Primitive Objects

[Primitive Objects] Unity can work with 3D models of any shape that can be created with modelling so ...

Programming Concepts

Attributes Attributes provide a powerful method of associating metadata, or declarative information, ...

nginx实现负载均衡

A服务器IP :192.168.5.149 (主) B服务器IP :192.168.5.27 C服务器IP :192.168.5.126 A服务器配置: 打开nginx.conf,文件位置在nginx ...

POJ 3253 Fence Repair (优先队列)

POJ 3253 Fence Repair (优先队列) Farmer John wants to repair a small length of the fence around the past ...

Eclipse使用的小细节归档

1. 控制台打印出来的语句不限制条数:Preference-> Run/Debug -> Control -> Limit Console Output 2.

Go的pprof使用

go中有pprof包来做代码的性能监控,在两个地方有包: net/http/pprof runtime/pprof 其实net/http/pprof中只是使用runtime/pprof包来进行封装了一 ...

android 添加splash,$Android启动界面(Splash)的两种实现方法相关推荐

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

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

  2. 如何创建启动界面Splash Screen

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

  3. (最新react-native-0.59.5) 如何将ReactNative项目集成到现有得Android项目中(两种实现方法之一)

    背景:最近在学习React-Native相关的知识,有个需求,如果已经存在一个成熟的Android 或者 IOS项目,如何实现在后续的开发中用RN来实现部分功能.再此我只是讲解一下Android de ...

  4. android studio gradle 自动更新,android studio gradle 两种更新方法更新

    又快一年没有使用AS了,正好要查看一个Android项目代码,干脆升级到新版试试看新变化,旧版本为3.1.2,目前最新版本为3.4.2,AS的升级是很简单的直接update等待即可. 升级完了,打开G ...

  5. android fragment传递参数_fragment之间传值的两种方法

    在Activity中加载Fragment的时候.有时候要使用多个Fragment切换.并传值到另外一个Fragment.也就是说两个Fragment之间进行参数的传递.查了很多资料.找到两种方法.一种 ...

  6. Android中实现SQLite数据库CRUD操作的两种方式

    Android中实现SQLite数据库CRUD操作的两种方式 SQLite是一款轻量级的关系型数据库,具有运行速度.占用资源少的特点.通常只需要几百KB的内存就够了,因此特别适合在移动设备上使用.SQ ...

  7. android中view手势滑动冲突的两种解决方法

    android中view手势滑动冲突的解决方法,主要解决方法有两种,外部和内部拦截.有需要的可以参考下. Android手势事件的冲突跟点击事件的分发过程息息相关,由三个重要的方法来共同完成,分别是: ...

  8. android 毫秒 计时器,Android时分秒计时器的两种实现方法

    可能我们在开发中会时常用到计时器这玩意儿,比如在录像的时候,我们可能需要在右上角显示一个计时器.这个东西其实实现起来非常简单. 只需要用一个控件Chronometer,是的,就这么简单,我都不好意思讲 ...

  9. android布局密码,Android中EditText显示明文与密码的两种方式

    效果图如下所述: 布局 xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="h ...

  10. PyQt5随笔:Qtdesigner设计转换而来的界面.py文件两种调用方式

    PyQt5随笔:Qtdesigner设计转换而来的界面.py文件两种调用方式 文章目录 PyQt5随笔:Qtdesigner设计转换而来的界面.py文件两种调用方式 1.前言 2.方式一:另建 py ...

最新文章

  1. oracle9i数据库自动备份,Windows环境下Oracle9i数据库文件的自动备份
  2. python解析xml文件elementtree_Python中使用ElementTree解析XML示例
  3. ubuntu每次启动都出现检测到错误
  4. Nginx monitor
  5. 社交网络图中结点的“重要性“计算(Dijkstra + SPFA + Floyd + 模板)
  6. 前端学习(1350):用户的增删改查操作7增删改查
  7. 云图说|数据仓库服务 GaussDB(DWS) 的“千里眼、顺风耳”—数据库智能运维
  8. OpenShift 4 之Istio-Tutorial (7) 利用VirtualService的故障注入实现混沌测试Chaos Testing
  9. 放假为什么要借周末呢?
  10. [poj1410]Intersection
  11. 移动办公之路的行业探索
  12. 不混淆 android jni,JNI 防混淆 Android proguard
  13. LwIP协议栈——网络接口管理
  14. 关于移动端video-player点击播放自动全屏
  15. gcj编译java_GCJ编译java程序的头痛问题
  16. 利用代码将网站预测蛋白稳定性突变自动化
  17. “网络侦探”基础教程
  18. Android LeakCanary使用详细教程
  19. opencv 图像拼接
  20. 美国在线计算机硕士申请难度,美国计算机硕士申请难度大PK

热门文章

  1. 结合代码分析PEP8和在PyCharm中实现PEP8
  2. Xcopy的应用总结
  3. 数据结构-双链表基本操作(C语言实现)
  4. 9.Kafka 分区分配策略(Range分配策略 RoundRobin分配策略)
  5. Docker教程及完整讲义(入门级)
  6. pytorch 神经网络特征可视化
  7. 搭建服务器集群的方法介绍
  8. 一个测试人员,在现阶段的环境下如何在测试行业发展和自我价值。
  9. strdup和strcpy比较
  10. 你一定不知道:冬至吃饺子是为了纪念谁?