您的位置:首页 > 移动开发 > Android开发

Android启动页面定时跳转的三种方法

2017-09-13 10:19 218 查看
Android启动页面定时跳转的三种方法

一、在onCreate里设置个Timer,然后建立Intent指向你要调用的Activity。设置Timer 任意秒后执行startActivity即可!(Timer是一种定时器工具,用来在一个后台线程计划执行指定任务,它可以计划执行一个任务一次或反复多次)

[java] view
plain copy

final Intent it = new Intent(this, Activity1.class); //你要转向的Activity     

   Timer timer = new Timer();    

   TimerTask task = new TimerTask() {    

     @Override    

     public void run() {     

     startActivity(it); //执行    

      }    

    };   

   timer.schedule(task, 1000 * 10); //10秒后   

二、利用子线程在run方法中设置跳转,用Handler来执行。

[java] view
plain copy

public class WelcomeActivity extends Activity {   

   

@Override   

protected void onCreate(Bundle savedInstanceState) {   

   // TODO Auto-generated method stub   

   super.onCreate(savedInstanceState);   

   setContentView(R.layout.welcome);   

   new Handler().postDelayed(r, 1000);// 1秒后关闭,并跳转到主页面   

}   

 Runnable r = new Runnable() {   

   @Override   

   public void run() {   

     // TODO Auto-generated method stub   

     Intent intent = new Intent();   

     intent.setClass(WelcomeActivity.this, MainActivity.class);   

     startActivity(intent);   

     finish();   

    }   

  };   

}   

三、以动画形式(旋转、缩放等)作为开始页面,这种方法在项目中也是比较常用的,比第一种方法多了动画集,具体看代码注释!

开始动画页面布局splashMain.xml

[xml] view
plain copy

<?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" >   

   <ImageView   

    android:id="@+id/iv_splash_mainview"   

    android:layout_width="fill_parent"   

    android:layout_height="fill_parent"   

    android:background="@drawable/splash_bg"   

    android:src="@drawable/splash_sheep_n" />   

</LinearLayout>   

开始动画页面splashActivity.java

[java] view
plain copy

public class <span style="font-family: Arial, Helvetica, sans-serif;">splash</span><span style="font-family: Arial, Helvetica, sans-serif;">Activity extends Activity {</span>   

     

  private ImageView iv_mainview;   

  private AnimationSet as;   

   

  @Override   

  protected void onCreate(Bundle savedInstanceState) {   

    // TODO Auto-generated method stub   

    super.onCreate(savedInstanceState);   

       

    //去掉标题  

    //requestWindowFeature(Window.FEATURE_NO_TITLE);   

    initView();// 初始化界面   

   

    startAnimation();//开始播放动画    

   

    initEvent();//初始化事件   

  }   

   

     

  private void initEvent() {   

    //1、监听动画播放完的事件,只是一处用到事件就用匿名类对象,多处声明成员变量用    

    as.setAnimationListener(new AnimationListener() {   

   

      @Override   

      public void onAnimationStart(Animation animation) {   

           

      }   

   

      @Override   

      public void onAnimationRepeat(Animation animation) {   

   

      }   

   

      //监听动画播放完   

      @Override   

      public void onAnimationEnd(Animation animation) {   

           

        //    

        Intent main = new Intent(<span style="font-family: Arial, Helvetica, sans-serif;">splash</span><span style="font-family: Arial, Helvetica, sans-serif;">Activity </span><span style="font-family: Arial, Helvetica, sans-serif;">.this,MainActivity.class);</span>   

        startActivity(main);//主界面   

         

        //关闭自己   

        finish();   

      }   

    });   

  }   

   

  /**  

   * 开始播放动画:旋转,缩放,渐变  

   */   

  private void startAnimation() {   

    // false 代表动画集中每种动画都采用各自的动画插入器(数字函数)   

    as = new AnimationSet(false);   

   

    //旋转动画,锚点   

    RotateAnimation ra = new RotateAnimation(   

        0, 360,   

        Animation.RELATIVE_TO_SELF, 0.5f,   

        Animation.RELATIVE_TO_SELF,0.5f);//设置锚点为图片的中心点   

    // 设置动画播放时间   

    ra.setDuration(2000);   

    ra.setFillAfter(true);//动画播放完之后,停留在当前状态    

   

    // 添加到动画集   

    as.addAnimation(ra);   

   

    // 渐变动画   

    AlphaAnimation aa = new AlphaAnimation(0, 1);//由完全透明到不透明    

    //    

    aa.setDuration(2000);   

    aa.setFillAfter(true);//   

   

    //    

    as.addAnimation(aa);   

   

    // 缩放动画   

    ScaleAnimation sa = new ScaleAnimation(   

        0, 1, 0, 1,   

        Animation.RELATIVE_TO_SELF, 0.5f,    

        Animation.RELATIVE_TO_SELF, 0.5f);   

    //    

    sa.setDuration(2000);   

    sa.setFillAfter(true);//   

   

    //    

    as.addAnimation(sa);   

   

    // 播放动画   

    iv_mainview.startAnimation(as);   

   

    // 动画播完进入下一个界面 :向导界面或者主界面   

    //1、监听动画播放完的事件   

       

   

  }   

   

  private void initView() {   

    // 设置主界面   

    setContentView(R.layout.onemain);   

   

    // 获取背景图片   

    iv_mainview = (ImageView) findViewById(R.id.iv_splash_mainview);   

   

  }   

   

       

     

     

}   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: