6、欢迎界面的几种实现方法

     在进入应用的时候,往往我们首先看到的是这个应用的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();
     }
}


可以看到同样实现了跳转的效果,但是没有了动画,这个加动画的话也比较简单,这里就不做了,有兴趣的话大家做一做。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值