Android创建启动画面

时间:2022-09-18 21:14:49

每一个Android应用启动之后都会出现一个Splash启动界面,显示产品的LOGO、公司的LOGO或者开发人员信息。假设应用程序启动时间比較长,那么启动界面就是一个非常好的东西,能够让用户耐心等待这段枯燥的时间。

  1.制作Splash界面
  突出产品LOGO,产品名称,产品主要特色;
  注明产品的版本号信息;
  注明公司信息或者开发人员信息;
  背景图片,亦能够用背景颜色取代;

  2.处理后台资源
  大多数的Splash界面都是会等待一定时间,然后切换到下一个界面;
  事实上,在这段时间里,能够对系统状况进行检測,比方网络是否通,电源是否充足;
  或者,预先载入相关数据;
  为了能让启动界面展现时间固定,须要计算运行以上预处理任务所花费的时间,那么:启动界面SLEEP的时间=固定时间-预处理任务时间;

  思路有两个,一个是用两个Activity来做,一个用来做启动画面,还有一个是主页面;还能够用一个Activity来做,程序启动时显现启动画面,当启动完毕后,它会被隐藏来。

方法一:两个Activity,通过线程延迟指定的时间再运行Activity的跳转,我们须要建立两个Activity,一个是SplashActivity,用来做启动画面。还有一个是HelloWorldActivity。在这里仅仅是说明怎样来做启动画面,所以就不具体来完毕Activity了。

核心代码:

package com.demo.app;

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 = 6000; // 延迟六秒 @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,
HelloWorldActivity.class);
SplashActivity.this.startActivity(mainIntent);
SplashActivity.this.finish();
} }, SPLASH_DISPLAY_LENGHT); }
}

说明:

Handler().postDelayed  是延迟指定的时间再运行

Handler类主要能够使用例如以下3个方法来设置运行Runnable对象的时间:

//  马上运行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);

以下两行代码启动一个新的Activity,同一时候关闭当前Activity。

SplashActivity.this.startActivity(mainIntent);
SplashActivity.this.finish();

以下再讲一下Activity的生命周期,方便大家理解Activity的跳转。

Android创建启动画面

如上所看到的,Android 程序猿能够决定一个 Activity 的“生”,但不能决定它的“死”,也就时说程序猿能够启动一个 Activity,可是却不能手动的“结束”一个 Activity。

当你调用 Activity.finish()方法时,结果和用户按下 BACK 键一样:告诉 Activity Manager 该 Activity 实例完毕了对应的工作,能够被“回收”。

随后 Activity Manager 激活处于栈第二层的 Activity 并又一次入栈,同一时候原 Activity 被压入到栈的第二层,从 Active 状态转到 Paused 状态。

比如上面样例中:从 SplashActivity 中启动了 HelloWorldActivity,则当前处于栈顶端的是 HelloWorldActivity,第二层是 SplashActivity 。

当我们调用 SplashActivity.finish()方法时(我们是在SplashActivity中通过SplashActivity.this.finish()调用的),SplashActivity 从 Active 状态转换 Stoped 状态,并被系统从栈中移除,标志能够被“回收”。

Activity 的状态与它在栈中的位置关系例如以下图:

Android创建启动画面

上图的样例是

从 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。

还有一点要注意的是,不要忘了改动AndroidManifest.xml文件。例如以下:

<?xmlversion="1.0"encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.demo.app"
android:versionCode="1"
android:versionName="1.0"
<applicationandroid:icon="@drawable/icon";android:label="@string/app_name">
<activityandroid:name=.SplashActivity"
android:label="@string/app_name"> ;
<intent-filter>
<actionandroid:name="android.intent.action.MAIN"/>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activityandroid:name="Main">
</activity>
</application>
<uses-sdkandroid:minSdkVersion="3"/>
</manifest>

方法二:一个 Activity来做。程序启动时显现启动画面,当启动完毕后,它会被隐藏来

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout android:id="@+id/splashscreen"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"> <TextView android:id="@+id/info"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:paddingTop="10px"
android:text="This is a splash !" />
</LinearLayout> <TextView android:layout_width="fill_parent"
android:paddingTop="10px"
android:layout_height="wrap_content"
android:text="This is a Context" />
</LinearLayout>

说明:

这里有一个id为splashscreen的LinearLayout,是程序启动时显现的部分。当启动完毕后,它会被隐藏。

核心代码:

package com.demo.app;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
import android.view.View;
import android.view.Window;
import android.widget.LinearLayout;
import android.widget.TextView; public class MainActivity extends Activity { private LinearLayout splash;
private TextView tv; private static final int STOPSPLASH = 0;
// time in milliseconds
private static final long SPLASHTIME = 1000; private Handler splashHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case STOPSPLASH:
SystemClock.sleep(4000);
splash.setVisibility(View.GONE);
break;
}
super.handleMessage(msg);
}
}; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.main); splash = (LinearLayout) findViewById(R.id.splashscreen);
tv = (TextView) findViewById(R.id.info);
tv.setText("正在建立数据连接"); Message msg = new Message();
msg.what = STOPSPLASH;
splashHandler.sendMessageDelayed(msg, SPLASHTIME);
}
}

当在应用启动后发送一个消息,把指定区域设置为隐藏, splash.setVisibility(View.GONE); 就实现了启动界面。

总结一下,个人认为还是第一个方法比較合适,当一个程序主Activity里的东西比較多的时候,假设我们还把启动画面也加进去,势必会影响程序的效率,所以实际应用的话,第一个方法是首选。

Android创建启动画面的更多相关文章

  1. Android创建启动画面&lbrack;转&rsqb;

    每个Android应用启动之后都会出现一个Splash启动界面,显示产品的LOGO.公司的LOGO或者开发者信息.如果应用程序启动时间比较长,那么启动界面就是一个很好的东西,可以让用户耐心等待这段枯燥 ...

  2. 从零开始学Xamarin&period;Forms&lpar;三&rpar; Android 制作启动画面

    原文:从零开始学Xamarin.Forms(三) Android 制作启动画面     Xamarin.Forms 在启动的时候相当慢,必须添加一个启动界面,步骤如下: 1.将启动画面的图片命名为:s ...

  3. Delphi开发 Android 程序启动画面简单完美解决方案

    原文在这里 还是这个方法好用,简单!加上牧马人做的自动生成工具,更是简单. 以下为原文,向波哥敬礼! 前面和音儿一起研究 Android 下启动画面的问题,虽然问题得到了解决,但是,总是感觉太麻烦,主 ...

  4. Android &amp&semi; iOS 启动画面工具

    感谢Aone!为我们开发了如此便捷的工具!! 以下为原文:  Android & iOS 启动画面工具 下载:OneSplash.启动画面工具.Aone.20190318.zip 说明:这一个 ...

  5. Android应用启动画面

    原文地址: [Android]应用启动画面 - 空客的日志 - 网易博客 http://blog.163.com/da7_1@126/blog/static/104072678201291921028 ...

  6. Xamarin&period;Forms &lpar;Android制作启动画面&rpar;

    http://blog.csdn.net/zapzqc/article/details/38496117     Xamarin.Forms 在启动的时候相当慢,必须添加一个启动界面,步骤如下: 1. ...

  7. android 之 启动画面的两种方法

    现在,当我们打开任意的一个app时,其中的大部分都会显示一个启动界面,展示本公司的logo和当前的版本,有的则直接把广告放到了上面.启动画面的可以分为两种设置方式:一种是两个Activity实现,和一 ...

  8. react native android应用启动画面

    参考地址:https://www.youtube.com/watch?v=rnLR65OGtic 第一步:生成启动画面的背景图片 生成一个2048*2048的背景图片,打开网站https://apet ...

  9. 初学Android&comma;创建&comma;启动&comma;停止Service&lpar;五十八&rpar;

    Service跟Windows系统里的服务概念差不多,都在后台执行,它跟Activity的最大区别就是,它是*面的 开发Service与开发Activity的步骤类似 1.定义一个继承Service ...

随机推荐

  1. 字符串格式化 String&period;format&lpar;&rpar; 案例

    转换符 转换符      说    明 %s            字符串类型 %c            字符类型 %b            布尔类型 %d            整数类型(十进制 ...

  2. 03 - 替换vtkDataObject中的GetProducerPort&lpar;&rpar;方法 VTK 6&period;0 迁移

    VTK6 引入了许多不兼容的变.其中之一是删除vtkDataObject中所有有关管道的方法.其中的一个方法就是GetProducerPort(). 一般,先前使用这个方法如下例子: vtkPolyD ...

  3. link 与 &commat;import之对比

    页面中使用CSS的方式主要有3种:行内添加定义style属性值,页面头部内嵌调用和外面链接调用,其中外面引用有两种:link和@import.外部引用CSS两种方式link和@import的方式分别是 ...

  4. 学号:201621123032 《Java程序设计》第8周学习总结

    1:本周学习总结 2:书面作业 2.1:ArrayList代码分析 2.1.1:解释ArrayList的contains源代码 Contains方法调用indexof方法,如果元素为null,则循环比 ...

  5. Django富文本需要添加配置

    TINYMCE_DEFAULT_CONFIG = { 'theme': 'advanced', 'width': 600, 'height': 400, }

  6. Flask 框架中 上下文基础理念,包括cookie,session存储方法,requset属性,current&lowbar;app模块和g模块

    Flask中上下文,分为请求上下文和应用上下文.既状态留存 ,就是把变量存在某一个地方可以调用 请求上下文:实际就是request和session用法理念,既都是可以存储东西. 应用上下文:既变量共享 ...

  7. Linux学习笔记11—VSFTP的搭建

    1.查看是否安装vsftp rpm -qa | grep vsftpd 如果出现vsftpd-2.0.5-21.el5,说明已经安装 vsftp 安装vsftp yum -y install vsft ...

  8. 海瑞菌的web前端学习直播间

    这是本人的web前端学习直播间 一般每天晚上10点--12点为直播时间...以web前端开发为主. 若设备无法打开,请点击链接进入:https://www.huya.com/14958154 setT ...

  9. SQL Server通过外部程序集注册正则表达式函数&lpar;CLR函数&rpar; &lbrack;转&rsqb;

    转自:http://blog.csdn.net/binguo168/article/details/76598581 1.下载dll程序集(通过C#编写的支持正则的方法),百度网盘下载: 1.1如果只 ...

  10. 2018&period;10&period;14 loj&num;516&period; DP 一般看规律(启发式合并)

    传送门 注意到一种颜色改了之后就不能改回去了. 因此可以启发式合并. 每次把小的合并给大的. 这样每个数最多被合并logloglog次. 如果维护一棵比较下标的平衡树的话,对于答案有贡献的就是每个数与 ...