Android启动界面实现: SplashActivity与MainAcitvity
97 浏览量
更新于2024-08-28
收藏 181KB PDF 举报
本文主要介绍了如何在Android应用中创建一个类似微信启动的欢迎界面,这种界面只在首次打开应用时显示,并且即使用户按回退键也不会再次出现。文中提到了几个关键的知识点,包括`AndroidManifest.xml`中`activity`的`android:noHistory`属性、隐式`Intent`以及回退栈(BackStack)的概念,并提供了相应的实现代码。
在Android应用开发中,欢迎界面(Splash Screen)通常用于展示品牌标识或者进行一些初始化操作。为了实现这样的效果,我们需要在`AndroidManifest.xml`中配置一个特定的`Activity`,即`SplashActivity`。在这个`Activity`中,我们将`android:noHistory`属性设置为`true`,这表示一旦用户离开这个`Activity`,系统会将其从回退栈中移除,从而达到仅显示一次的效果。
```xml
<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>
```
`<intent-filter>`标签内的`<action>`和`<category>`分别指定了启动`Activity`的意图动作(ACTION_MAIN)和类别(CATEGORY_LAUNCHER),这样当应用被启动时,系统会默认打开`SplashActivity`。
同时,`SplashActivity`通常会通过`Intent`跳转到主界面`MainActivity`。在`SplashActivity`中,我们可以设置一个定时器或者根据某些条件判断何时启动`MainActivity`。`Intent.FLAG_ACTIVITY_NO_HISTORY`可以在`Intent`中设置,作用与`android:noHistory="true"`相同,都是防止`SplashActivity`被保留在回退栈中。
```java
public abstract class SplashActivity extends Activity implements Runnable {
// ...其他代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
new Thread(this).start(); // 在新线程中执行加载逻辑
}
@Override
public void run() {
// 这里进行初始化操作或计时
// ...
// 跳转到主界面
Intent intent = new Intent(SplashActivity.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); // 避免SplashActivity留在历史记录中
startActivity(intent);
finish(); // 结束SplashActivity
}
}
```
在`SplashActivity`的`run()`方法中,我们可以进行一些必要的初始化操作,如检查更新、读取配置文件等。完成这些操作后,使用`Intent`启动`MainActivity`,并添加`FLAG_ACTIVITY_NO_HISTORY`标志,确保`SplashActivity`不会被用户通过回退键重新打开。
通过以上所述的配置和代码,我们可以实现一个只在首次启动时显示的欢迎界面,类似于微信、QQ等应用的启动页。这样的设计提高了用户体验,同时也为应用提供了一个简洁的入口。
2017-11-06 上传
2021-01-05 上传
734 浏览量
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
weixin_38738189
- 粉丝: 5
- 资源: 954
最新资源
- Angular实现MarcHayek简历展示应用教程
- Crossbow Spot最新更新 - 获取Chrome扩展新闻
- 量子管道网络优化与Python实现
- Debian系统中APT缓存维护工具的使用方法与实践
- Python模块AccessControl的Windows64位安装文件介绍
- 掌握最新*** Fisher资讯,使用Google Chrome扩展
- Ember应用程序开发流程与环境配置指南
- EZPCOpenSDK_v5.1.2_build***版本更新详情
- Postcode-Finder:利用JavaScript和Google Geocode API实现
- AWS商业交易监控器:航线行为分析与营销策略制定
- AccessControl-4.0b6压缩包详细使用教程
- Python编程实践与技巧汇总
- 使用Sikuli和Python打造颜色求解器项目
- .Net基础视频教程:掌握GDI绘图技术
- 深入理解数据结构与JavaScript实践项目
- 双子座在线裁判系统:提高编程竞赛效率