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