【Android学习】Android创建启动画面(2)

对于Android应用的Splash启动画面,还有第二种方法,就是只用一个Activity,当程序启动时显示启动画面,当启动完成时,它就会隐藏起来。

这种方法的优势在于,因为Splash和主页面处于同一Activity,就可以利用Splash的时间来预加载数据,这样用户就不必在Splash之后再等待数据加载,这样就可以形成好的用户体验。但是,这种方法的缺点也非常明显,如下:

1、由于处于同一Activity内,除非主体Activity是全屏的,否则没办法让启动画面Splash全屏,但是作为一款优秀的应用App来讲,一般主体不会是全屏的。

2、逻辑放在一起,难以维护。Splash和主体Activity放在一个Activity中,所有的逻辑都在一个Activity中,如果Splash想做比较好的效果,难以修改和维护。

当然,Android的原生应用中并没有Splash,而对于这两种实现方法来讲,可以根据我们的要求来进行选择。下面就是具体的代码实现:

activity_main.xml代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

   <LinearLayout 
       android:id="@+id/splash"
       android:layout_width="match_parent"
       android:layout_height="match_parent">
       <TextView 
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:text="数据加载中·······"/>
   </LinearLayout>
   <LinearLayout 
       android:id="@+id/content"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:background="@drawable/content"
       android:orientation="horizontal"></LinearLayout>

</LinearLayout>

MainActivity.java代码:

package com.ye_yun_lin.startactivity;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.Window;
import android.widget.LinearLayout;
import android.widget.TextView;

public class MainActivity extends Activity {
	private LinearLayout linearLayout;
	private static final int STOPSPLASH=0;
	private static final long SPLASHTIME=1000;
	private Handler splashHandler=new Handler(){

		@Override
		public void handleMessage(Message message) {
			switch (message.what) {
			case STOPSPLASH:
				SystemClock.sleep(4000);
				linearLayout.setVisibility(View.GONE);
				break;

			default:
				break;
			}
			super.handleMessage(message);
		}
		
	};

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		getWindow().requestFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.activity_main);
		
		linearLayout=(LinearLayout)findViewById(R.id.splash);
		
		Message message=new Message();
		message.what=STOPSPLASH;
		splashHandler.sendMessageDelayed(message, SPLASHTIME);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}


【Android学习】Android创建启动画面(2),,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。