在进入应用的时候,往往我们首先看到的是这个应用的logo或者是应用制作公司的logo,这个便是一种欢迎界面,一个欢迎界面的好坏也会应用用户对这款应用的体验,本节我们介绍几种欢迎界面的实现方法。
一、使用动画的方式
这种方式是使用动画的监听实现的,在动画结束的时候跳转Activity,并关闭欢迎界面Activity,这种方法不需要线程,实现起来也比较简单。
首先我们先吧欢迎界面(activity_welcome.xml)的布局写出来,很简单,就是一个logo,借用下QQ。
<?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:gravity= "center"
android:background= "#fff"
android:orientation= "vertical" >
<ImageView
android:id="@+id/welcome_image"
android:layout_width="150dp"
android:layout_height="150dp"
android:src="@drawable/icon_qq" />
</LinearLayout>
我们新建一个Activity,用于实现欢迎界面效果,
public class WelcomeActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout. activity_welcome);
//在欢迎界面里放了个 logo
ImageView myImageLogo = (ImageView)findViewById(R.id.welcome_image );
//这里使用渐变动画,透明度从0.1渐变到1.0
AlphaAnimation alphaAnim = new AlphaAnimation(0.1f,1.0f);
//设置动画的时间,这也是该欢迎界面的持续时间,以毫秒为单位
alphaAnim.setDuration(5000);
//设置动画监听器
alphaAnim.setAnimationListener( new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
//动画开始时执行
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
//动画结束时执行
Intent intent = new Intent(WelcomeActivity.this ,MainActivity.class);
startActivity(intent);
}
});
//将动画与ImageView绑定,开始动画
myImageLogo.setAnimation(alphaAnim);
}
//往往欢迎界面需要屏蔽返回键
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK) {
return false ;
}
return super .onKeyDown(keyCode, event);
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
//该欢迎界面Activity stop时结束该Activity
this.finish();
}
}
别忘了在AndroidManifest.xml中配置该Activity为入口Activity,另外,为了更加的好看,我们设置了没有标题框(一般应用欢迎界面都没有标题框,有个连状态栏都没有),并且固定了屏幕方向。
<activity
android:name=".WelcomeActivity"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Black.NoTitleBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
</activity>
来看一下最终的效果:
二、使用线程与Handler实现
当我们想实现界面持续一段时间切换的效果,我们最先想到的应该就是线程了,Android中使用Handler更为方便,只需要使用Handler的postDelayed方法就可以了,我们只需要将上面使用动画方式的例子中欢迎界面Activity稍加修改就可以:
public class WelcomeActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout. activity_welcome);
Handler myHandler = new Handler();
//延时2000毫秒跳转Activity
myHandler.postDelayed( new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Intent intent = new Intent(WelcomeActivity.this ,MainActivity.class);
startActivity(intent);
}
}, 2000);
}
//往往欢迎界面需要屏蔽返回键
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK) {
return false ;
}
return super .onKeyDown(keyCode, event);
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
//该欢迎界面Activity stop时结束该Activity
this.finish();
}
}
可以看到同样实现了跳转的效果,但是没有了动画,这个加动画的话也比较简单,这里就不做了,有兴趣的话大家做一做。