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

来源:互联网 发布:网上开店软件排名 编辑:程序博客网 时间:2024/05/16 07:24
     在进入应用的时候,往往我们首先看到的是这个应用的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();     }}


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


0 0
原创粉丝点击