Android 应用的欢迎界面实现代码

 更新时间:2016年07月26日 17:03:16   投稿:lqh  
本文主要介绍Android 应用欢迎界面的开发,这里提供实现方法和实现代码以供大家参考,有需要的朋友可以参考下

本文详细描述了如何实现如下图中的微信启动界面. 该类启动界面的特点是在整个Application的生命周期里, 它只会出现在第一次进入应用时, 即便按回退键到桌面之后. 使用该类启动界面的应用还有: QQ, QQ音乐, 网易云音乐和微博等等.

知识要点:

AndroidManifest.xml 中 activity 的 android:noHistory 属性, 即 Intent.FLAG_ACTIVITY_NO_HISTORY

隐式Intent

回退栈(BackStack) 

详细内容见官方文档.

实现代码:

定义

SplashActivity 为启动界面

MainActivity 为主界面

AndroidManifest.xml

<!-- 该文件为AndroidManifest.xml, 以下代码为application下的activity声明 -->

<!-- 启动界面 -->
<activity android:name=".SplashActivity"
  android:label="@string/app_name"
  android:noHistory="true">
 <intent-filter>
 <action android:name="android.intent.action.MAIN"/>
 <category android:name="android.intent.category.LAUNCHER"/>
 </intent-filter>
</activity>

<!-- 主界面 -->
<activity android:name=".MainActivity" android:label="@string/app_name">
</activity>

特别需要注意的是, 在上述Activity-XML定义中, 我们设置了SplashActivity为noHistory的属性为true, 该设置是告诉系统只要离开该activity, 则请把该activity从回退栈中清除. 另外, 直接在Intent中设置Intent.FLAG_ACTIVITY_NO_HISTORY标识的效果同设置该属性为true的.

SplashActivity.java

import ...

public abstract class SplashActivity extends Activity implements Runnable {
 final Handler mHandler = new Handler();

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_splash);

 mHandler.postDelayed(this, 2000);
 }

 @Override
 public void run() {
 Intent intent = new Intent(this, MainActivtiy.class);
 startActivity(intent);
 // 此处可以不需要调用finish()了, 因为已经设置了noHistory属性, 从而使得系统接管finish操作
 }
}

 MainActivity.java

import ...

public abstract class MainActivity extends Activity {
 ...

 @Override
 public void onBackPressed() {     
    // 方法 1: goto the default launcher. It's not recommended.
    // Intent i = new Intent(Intent.ACTION_MAIN);
    // i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    // i.addCategory(Intent.CATEGORY_HOME);
    // startActivity(i);

    // 方法 2: goto the default launcher. It's recommended.
    moveTaskToBack(true);
  }
}

上述代码中, 提供了两个方法, 第一个方法通过隐式Intent来切换到桌面应用(即Launcher), 第二个方法则是将当前activity所在的task切换到后台, 需要注意的是, moveTaskToBack(boolean nonRoot) 的 nonRoot 参数, 如果nonRoot=false, 则要求当前activity为栈顶activity, 否则, 调用将不起任何效果, 如果nonRoot=true, 则忽略nonRoot=false时的条件, 因此, 我们在这里直接设置nonRoot=true

到这里, 我们可以一直按回退键, 直到切换到桌面, 这时SplashActivity已经被系统清理了, MainActivity连同它所在的Task已经切换到后台了. 下次我们再启动应用时, 只要MainActivity没有被系统回收, 那么我们再看到的MainActivity还是退回到桌面前的那个MainActivity.

希望本篇文章能帮助开发Android应用的朋友。

相关文章

  • Android中的异步任务处理与UI更新技巧

    Android中的异步任务处理与UI更新技巧

    在Android开发中,异步任务处理和UI更新是两个非常重要的概念,本文将详细介绍Android中异步任务的处理方式以及如何在异步任务完成后更新UI,并通过代码示例介绍的非常详细,具有一定的参考价值,需要的朋友可以参考下
    2024-09-09
  • MobLink Android端业务场景简单说明

    MobLink Android端业务场景简单说明

    这篇文章主要介绍了MobLink Android端业务场景简单说明,MobLink的功能实现就是在分享前会将链接的参数信息保存到服务器,更多相关内容需要的朋友可以参考一下
    2022-09-09
  • Flutter之Timer实现短信验证码获取60s倒计时功能的代码

    Flutter之Timer实现短信验证码获取60s倒计时功能的代码

    这篇文章主要介绍了Flutter之Timer实现短信验证码获取60s倒计时功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • Android中实时获取音量分贝值详解

    Android中实时获取音量分贝值详解

    这篇文章主要介绍了Android中实时获取音量分贝值详解,本文讲解了基础知识、Android API、MediaRecorder、AudioRecord等内容,需要的朋友可以参考下
    2015-04-04
  • Android自动填充短信验证码功能(demo)

    Android自动填充短信验证码功能(demo)

    在项目开发中为了给用户带来极好的体验效果,通常需要实现验证码的自动填充功能,怎么实现呢?今天小编给大家分享Android自动填充短信验证码功能的实现方法,需要的朋友参考下吧
    2017-02-02
  • android实现图片验证码方法解析(自绘控件)

    android实现图片验证码方法解析(自绘控件)

    本文主要介绍了android自绘控件的应用--实现图片验证码方法案例,具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • Android连接MySQL数据库详细教程

    Android连接MySQL数据库详细教程

    在Android应用程序中连接 MySQL 数据库可以帮助开发人员实现更丰富的数据管理功能,本教程将介绍如何在Android应用程序中使用低版本的MySQL Connector/J驱动程序来连接MySQL数据库,需要的朋友可以参考下
    2023-05-05
  • android h5页面获取不到定位数据的问题解决

    android h5页面获取不到定位数据的问题解决

    我们经常会遇到onGeolocationPermissionsShowPrompt 已经执行,但仍然没有获取到定位数据的问题,所以本文给大家介绍了android h5页面获取不到定位数据的问题解决,需要的朋友可以参考下
    2024-11-11
  • Android4.4下MediaProvider无法向外置SD卡中文件写数据的解决方法

    Android4.4下MediaProvider无法向外置SD卡中文件写数据的解决方法

    这篇文章主要介绍了Android4.4下MediaProvider无法向外置SD卡中文件写数据的解决方法,实例分析了Android4.4下针对读写限制的修改技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • Android二维码开发学习教程

    Android二维码开发学习教程

    这篇文章主要为大家分享了Android二维码开发学习教程,感兴趣的小伙伴们可以参考一下
    2016-07-07

最新评论