Android开发笔记--制作启动界面splash
2016-01-22 10:06
573 查看
首先设置布局文件,欢迎界面为splash.xml。具体要什么样子的欢迎界面,请自己设计。
然后在主启动文件中输入下面代码:
[java] view
plain copy
package hopedark.HelloWorld;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
public class SplashActivity extends Activity {
private final int SPLASH_DISPLAY_LENGHT = 3000; // 延迟八秒
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
new Handler().postDelayed(new Runnable() {
public void run() {
Intent mainIntent = new Intent(SplashActivity.this,
ProgramActivity.class);//由启动文件SplashAcitivity跳转到ProgramActivity执行代码。ProgramActivity文件内包含了程序主要的核心代码。
SplashActivity.this.startActivity(mainIntent);
SplashActivity.this.finish();
}
}, SPLASH_DISPLAY_LENGHT);
}
}
[html] view
plain copy
<activity
android:label="@string/app_name"
android:name=".<span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; ">SplashActivity</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; ">" ></span>
<intent-filter > //这句话将SplashActivity.java文件设为程序启动文件
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".<span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; ">ProgramActivity</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; ">"></activity></span>
上面的XML代码在Manifest文件中修改。
说明:
Handler().postDelayed 是延迟指定的时间再执行
Handler类主要可以使用如下3个方法来设置执行Runnable对象的时间:
[java] view
plain copy
// 立即执行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);
有关 Handler 类的更详细可以看这篇文章:http://book.51cto.com/art/201006/207064.htm
下面两行代码启动一个新的Activity,同时关闭当前Activity。
SplashActivity.this.startActivity(mainIntent);
SplashActivity.this.finish();
对 finish 方法的解释如下: http://android.toolib.net/reference/android/app/Activity.html
Call this when your activity is done and should be closed. The ActivityResult is propagated back to whoever launched you via onActivityResult().
图来自: http://www.ibm.com/developerworks/cn/opensource/os-cn-android-actvt/
如上所示,Android 程序员可以决定一个 Activity 的“生”,但不能决定它的“死”,也就时说程序员可以启动一个 Activity,但是却不能手动的“结束”一个 Activity。
当你调用 Activity.finish()方法时,结果和用户按下 BACK 键一样:告诉 Activity Manager 该 Activity 实例完成了相应的工作,可以被“回收”。
随后 Activity Manager 激活处于栈第二层的 Activity 并重新入栈,同时原 Activity 被压入到栈的第二层,从 Active 状态转到 Paused 状态。
例如上面例子中:从 SplashActivity 中启动了ProgramActivity,则当前处于栈顶端的是ProgramActivity,第二层是 SplashActivity 。
当我们调用 SplashActivity.finish()方法时(我们是在SplashActivity中通过SplashActivity.this.finish()调用的),SplashActivity 从 Active 状态转换 Stoped 状态,并被系统从栈中移除,标志可以被“回收”。
Activity 的状态与它在栈中的位置关系如下图:
上图的例子是
从 Activity1 中启动了 Activity2,则当前处于栈顶端的是 Activity2,第二层是 Activity1,当我们在Activity2中调用 Activity2.finish()方法时,Activity Manager 重新激活 Activity1并入栈,Activity2 从 Active 状态转换 Stoped 状态,同时标注Activity2可以被“回收” 。Activity1.onActivityResult(int
requestCode, int resultCode, Intent data)方法被执行Activity2返回的数据通过 data参数返回给 Activity1。
然后在主启动文件中输入下面代码:
[java] view
plain copy
package hopedark.HelloWorld;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
public class SplashActivity extends Activity {
private final int SPLASH_DISPLAY_LENGHT = 3000; // 延迟八秒
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
new Handler().postDelayed(new Runnable() {
public void run() {
Intent mainIntent = new Intent(SplashActivity.this,
ProgramActivity.class);//由启动文件SplashAcitivity跳转到ProgramActivity执行代码。ProgramActivity文件内包含了程序主要的核心代码。
SplashActivity.this.startActivity(mainIntent);
SplashActivity.this.finish();
}
}, SPLASH_DISPLAY_LENGHT);
}
}
[html] view
plain copy
<activity
android:label="@string/app_name"
android:name=".<span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; ">SplashActivity</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; ">" ></span>
<intent-filter > //这句话将SplashActivity.java文件设为程序启动文件
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".<span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; ">ProgramActivity</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; ">"></activity></span>
上面的XML代码在Manifest文件中修改。
说明:
Handler().postDelayed 是延迟指定的时间再执行
Handler类主要可以使用如下3个方法来设置执行Runnable对象的时间:
[java] view
plain copy
// 立即执行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);
有关 Handler 类的更详细可以看这篇文章:http://book.51cto.com/art/201006/207064.htm
下面两行代码启动一个新的Activity,同时关闭当前Activity。
SplashActivity.this.startActivity(mainIntent);
SplashActivity.this.finish();
对 finish 方法的解释如下: http://android.toolib.net/reference/android/app/Activity.html
Call this when your activity is done and should be closed. The ActivityResult is propagated back to whoever launched you via onActivityResult().
图来自: http://www.ibm.com/developerworks/cn/opensource/os-cn-android-actvt/
如上所示,Android 程序员可以决定一个 Activity 的“生”,但不能决定它的“死”,也就时说程序员可以启动一个 Activity,但是却不能手动的“结束”一个 Activity。
当你调用 Activity.finish()方法时,结果和用户按下 BACK 键一样:告诉 Activity Manager 该 Activity 实例完成了相应的工作,可以被“回收”。
随后 Activity Manager 激活处于栈第二层的 Activity 并重新入栈,同时原 Activity 被压入到栈的第二层,从 Active 状态转到 Paused 状态。
例如上面例子中:从 SplashActivity 中启动了ProgramActivity,则当前处于栈顶端的是ProgramActivity,第二层是 SplashActivity 。
当我们调用 SplashActivity.finish()方法时(我们是在SplashActivity中通过SplashActivity.this.finish()调用的),SplashActivity 从 Active 状态转换 Stoped 状态,并被系统从栈中移除,标志可以被“回收”。
Activity 的状态与它在栈中的位置关系如下图:
上图的例子是
从 Activity1 中启动了 Activity2,则当前处于栈顶端的是 Activity2,第二层是 Activity1,当我们在Activity2中调用 Activity2.finish()方法时,Activity Manager 重新激活 Activity1并入栈,Activity2 从 Active 状态转换 Stoped 状态,同时标注Activity2可以被“回收” 。Activity1.onActivityResult(int
requestCode, int resultCode, Intent data)方法被执行Activity2返回的数据通过 data参数返回给 Activity1。
相关文章推荐
- Android开发笔记--Dialog提示框
- Android开发笔记--操纵字符串中的字符
- Android开发笔记--按钮添加事件的四种方法
- Android开发笔记--隐藏按钮
- Android 瘦身攻略
- Android Icons下载使用
- Android-利用LinearGradient实现文字一闪一闪
- Android无需root实现apk的静默安装
- Android中使用Gson解析JSON数据
- 简析Android的垃圾回收与内存泄露
- Android万能适配器
- Android启动过程深入解析
- Android导航栏隐藏与浮现
- android 简单地设置Activity界面的跳转动画
- Android开源框架Universal-Image-Loader详解
- Android中消除Dialog内容区域外围的灰色
- Android LK Bootlaoder启动概览
- 值得你关注的Android6.0上的重要变化(二)
- 值得你关注的Android6.0上的重要变化(一)
- Android中关于Volley的使用(二)加载Json数据