Android程序启动画面 Splash

很多应用都会有一个启动界面。欢迎画面慢慢隐现,然后慢慢消隐。

我的方式是使用两个Activity,程序启动时候load第一张Activity,然后由tick触发N秒钟后startActivity另外一张Activity。

splash.java


package com.yuyidong.second;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.Window;
import android.view.WindowManager;

public class Splash extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO 自动生成的方法存根
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.splash);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
new Handler().postDelayed(new Runnable(){
// 为了减少代码使用匿名Handler创建一个延时的调用
public void run() {
Intent i = new Intent(Splash.this, MainActivity.class);
//通过Intent打开最终真正的主界面Main这个Activity
Splash.this.startActivity(i); //启动Main界面
Splash.this.finish(); //关闭自己这个开场屏
}
}, 5000); //5秒
}

}

splash.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:src="@drawable/ic_launcher"
android:layout_gravity="center"
android:contentDescription="Hello"
/>
<TextView
android:id="@+id/info"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="This is a splash!!"/>
</LinearLayout>

将splash设置为一点开程序就先显示的activity。AndroidManifest.xml


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.yuyidong.second"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="16" />

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity android:name="Splash">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.yuyidong.second.MainActivity"
android:label="@string/app_name" >
</activity>
</application>
</manifest>

使用Activity的优势在于:

  1. 容易控制KEY事件

    因为在显示Splash的时候,是不应该响应事件的,比如触摸事件,或者BACK或者MENU,因为这是一个单独的Activity,所以你可以很容易禁掉这些用户事件,而不必担忧影响其他逻辑,或者担心未及时把它们重新启用。


  2. 容易定制

    因为它是一个单独的Activity,所以你可以把它设置成全屏的,或者没有TitleBar的,或者其他什么样式与风格。在实际使用中,几乎所有的Splash都设置成了全屏。因为它是单独的Activity,所以即使你的应用不是全屏的,也没有关系,因为只把SplashActivity设置成了全屏不会对其他Activity产生影响。


  3. 逻辑与主体逻辑分开,容易维护

    如前面二点,因为它是一个单独的Activity,所有的Splash相关的逻辑都在其中,而与应用主体的Activity是分开的,所以Splash中的逻辑不会影响到其他的Activity,这也更容易修改和维护,因为不会绞在一起相互影响。

使用Activity的唯一缺点就是它无法利用Splash显示的时间里做数据加载。因为它是一个单独的Activity,无法控制其他的Activity,并且这时其他Activity还未创建。

转载请注明出处:http://www.cnblogs.com/yydcdut/p/3688419.html

Android程序启动画面 Splash,布布扣,bubuko.com

时间: 2024-10-07 05:45:59

Android程序启动画面 Splash的相关文章

QSplashScreen类实现Qt程序启动画面

QSplashScreen类实现Qt程序启动画面 收藏人:zwsj     2013-09-13 | 阅:569  转:6    |   来源   |  分享      程序启动画面一般用于显示软件信息(名称.作者.版权等)以及减少程序加载过程中的枯燥感. 在Qt中,可以通过QSplashScreen类来为应用程序添加一个启动画面,它会在应用程序的主窗口出现前显示一个图片,并且可以在图片上显示想要输出的信息. 下面是一个简单的例子: [cpp] view plaincopy #include <

用VC制作应用程序启动画面

摘 要:本文提供了四种启动画面制作方法. 使用启动画面一是可以减少等待程序加载过程中的枯燥感(尤其是一些大型程序):二是 可以用来显示软件名称和版权等提示信息.怎样使用VC++制作应用程序的启动画面呢?本文提供四种方法.前三种适用于基于文档的应用程序,第四种适用于基于对话框的应用程 序. 1.利用组件库中的Splash Screen组件实现 (1)用Photoshop等制作启动画面图像,保存为bmp格式. (2)用Appwizard建一个基于单文档的工程Splash. (3)在资源中插入位图资源

Android App 启动页(Splash)黑/白闪屏现象产生原因与解决办法(转)

转载: Android App 启动页(Splash)黑/白闪屏现象产生原因与解决办法   首先感谢博主分享,本文作为学习记录 惊鸿一瞥 微信的启动页,相信大家都不陌生. 不知道大家有没有发现一个现象,微信每次启动的时候,是直接进入这个启动页面. 我的意思是,很多应用,往往会先白屏停顿一下后再进入启动页面(Splash).为了印证这一点,我把手机上所有的App都点了一遍.选几个例子 如下图: 微信:  斗鱼:  斗鱼和微信是直接进入了,他们的Splash页面. 知乎:  B站:  知乎和B站要先

Android App启动画面的制作

安卓软件启动时,都会有一个全屏的带LOGO,软件名称,版本号的启动屏幕.这个屏幕是怎么做出来的呢!!下面就一步一步的来! 一.新建项目 打开eclipse,新建一个Android项目,不建Activity.这时就出现一个空白的项目. 1.新建Activity文件 点击项目管理里的res,进入layout,右键点击NEW->Project->Android->Android XML Layout File 按步骤新建一个Activity的XML文件 我是选择新建了一个RelativeLay

从零开始学Xamarin.Forms(三) Android 制作启动画面

Xamarin.Forms 在启动的时候相当慢,必须添加一个启动界面,步骤如下: 1.将启动画面的图片命名为:splash_screen.png,并拷贝到 Resources 文件夹下的相应 Drawable 文件夹中: 2.在其中的 Drawable 文件夹下创建 splashscreen.xml ,内容为: <?xml version="1.0" encoding="utf-8" ?> <bitmap xmlns:android="h

PyQt5开发小记,如何实现程序启动画面和退出提示?

程序启动画面: if __name__ == "__main__": ui_style = UIStyle().get_style() app = QtWidgets.QApplication(sys.argv) # 创建QSplashScreen对象实例 splash = QtWidgets.QSplashScreen(QtGui.QPixmap("UserView/logo.png")) # 设置画面中的文字的字体 splash.setFont(QFont('M

MFC之窗体改动工具栏编程状态栏编程程序启动画面

1窗体外观的改动 (1)改动在CMainFrame::preCreateWindow(CREATESTRUCT& cs) 改动标题:cs.style&=FWS_ADDTOTITLE; cs.lpszNamw="new title"; (2)窗体创建之后改动外观 在CMainframe::Create()中调用SetWindowLong(HWND hwnd,.....)依据參数改动指定的项 全部从CWnd派生的类都是窗体类在这些窗体类中都有一个公有的成员变量保存了和着个窗

Qt程序启动画面播放(gif与swf两种动画格式)

学习Qt有一段时间了,发现一个小问题,网上关于Qt的资料或者总结性的学习及应用文章有点少. 比如,Qt完整的API,程序运行之前的启动画面如何按理想效果播放等,每次想在项目中添加一些应用的时候,总是找不到好的书籍或文章可以马上学习.上手. 今天,就把前段时间对启动画面播放的学习及尝试做一个小小的总结.如果对大家有所帮助,那自然好:如果有什么不足或有什么可以改进的地方,还望朋友们多给点意见及建议,谢谢! 过程很简单,只是建立了一个基于Qt控制台的项目,文件也只有一个——"main.cpp"

MFC之窗口修改工具栏编程状态栏编程程序启动画面

1窗口外观的修改 (1)修改在CMainFrame::preCreateWindow(CREATESTRUCT& cs) 修改标题:cs.style&=FWS_ADDTOTITLE; cs.lpszNamw="new title"; (2)窗口创建之后修改外观 在CMainframe::Create()中调用SetWindowLong(HWND hwnd,.....)根据参数修改指定的项 所有从CWnd派生的类都是窗口类在这些窗口类中都有一个公有的成员变量保存了和着个窗