当前位置: 代码迷 >> Android >> 【Android学习】Android创建启动画面(二)
  详细解决方案

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

热度:99   发布时间:2016-04-28 06:32:19.0
【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;	}}


  相关解决方案