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

来源:互联网 发布:广之旅待遇怎样知乎 编辑:程序博客网 时间:2024/06/08 10:59
Android启动页面定时跳转的三种方法

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

[java] view plain copy
  1. final Intent it = new Intent(this, Activity1.class); //你要转向的Activity     
  2.    Timer timer = new Timer();    
  3.    TimerTask task = new TimerTask() {    
  4.      @Override    
  5.      public void run() {     
  6.      startActivity(it); //执行    
  7.       }    
  8.     };   
  9.    timer.schedule(task, 1000 * 10); //10秒后   

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

[java] view plain copy
  1. public class WelcomeActivity extends Activity {   
  2.    
  3. @Override   
  4. protected void onCreate(Bundle savedInstanceState) {   
  5.    // TODO Auto-generated method stub   
  6.    super.onCreate(savedInstanceState);   
  7.    setContentView(R.layout.welcome);   
  8.    new Handler().postDelayed(r, 1000);// 1秒后关闭,并跳转到主页面   
  9. }   
  10.  Runnable r = new Runnable() {   
  11.    @Override   
  12.    public void run() {   
  13.      // TODO Auto-generated method stub   
  14.      Intent intent = new Intent();   
  15.      intent.setClass(WelcomeActivity.this, MainActivity.class);   
  16.      startActivity(intent);   
  17.      finish();   
  18.     }   
  19.   };   
  20. }   

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

开始动画页面布局splashMain.xml

[xml] view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>   
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"   
  3.   android:layout_width="match_parent"   
  4.   android:layout_height="match_parent" >   
  5.    <ImageView   
  6.     android:id="@+id/iv_splash_mainview"   
  7.     android:layout_width="fill_parent"   
  8.     android:layout_height="fill_parent"   
  9.     android:background="@drawable/splash_bg"   
  10.     android:src="@drawable/splash_sheep_n" />   
  11. </LinearLayout>   

开始动画页面splashActivity.java

[java] view plain copy
  1. public class <span style="font-family: Arial, Helvetica, sans-serif;">splash</span><span style="font-family: Arial, Helvetica, sans-serif;">Activity extends Activity {</span>   
  2.      
  3.   private ImageView iv_mainview;   
  4.   private AnimationSet as;   
  5.    
  6.   @Override   
  7.   protected void onCreate(Bundle savedInstanceState) {   
  8.     // TODO Auto-generated method stub   
  9.     super.onCreate(savedInstanceState);   
  10.        
  11.     //去掉标题  
  12.     //requestWindowFeature(Window.FEATURE_NO_TITLE);   
  13.     initView();// 初始化界面   
  14.    
  15.     startAnimation();//开始播放动画    
  16.    
  17.     initEvent();//初始化事件   
  18.   }   
  19.    
  20.      
  21.   private void initEvent() {   
  22.     //1、监听动画播放完的事件,只是一处用到事件就用匿名类对象,多处声明成员变量用    
  23.     as.setAnimationListener(new AnimationListener() {   
  24.    
  25.       @Override   
  26.       public void onAnimationStart(Animation animation) {   
  27.            
  28.       }   
  29.    
  30.       @Override   
  31.       public void onAnimationRepeat(Animation animation) {   
  32.    
  33.       }   
  34.    
  35.       //监听动画播放完   
  36.       @Override   
  37.       public void onAnimationEnd(Animation animation) {   
  38.            
  39.         //    
  40.         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>   
  41.         startActivity(main);//主界面   
  42.          
  43.         //关闭自己   
  44.         finish();   
  45.       }   
  46.     });   
  47.   }   
  48.    
  49.   /**  
  50.    * 开始播放动画:旋转,缩放,渐变  
  51.    */   
  52.   private void startAnimation() {   
  53.     // false 代表动画集中每种动画都采用各自的动画插入器(数字函数)   
  54.     as = new AnimationSet(false);   
  55.    
  56.     //旋转动画,锚点   
  57.     RotateAnimation ra = new RotateAnimation(   
  58.         0360,   
  59.         Animation.RELATIVE_TO_SELF, 0.5f,   
  60.         Animation.RELATIVE_TO_SELF,0.5f);//设置锚点为图片的中心点   
  61.     // 设置动画播放时间   
  62.     ra.setDuration(2000);   
  63.     ra.setFillAfter(true);//动画播放完之后,停留在当前状态    
  64.    
  65.     // 添加到动画集   
  66.     as.addAnimation(ra);   
  67.    
  68.     // 渐变动画   
  69.     AlphaAnimation aa = new AlphaAnimation(01);//由完全透明到不透明    
  70.     //    
  71.     aa.setDuration(2000);   
  72.     aa.setFillAfter(true);//   
  73.    
  74.     //    
  75.     as.addAnimation(aa);   
  76.    
  77.     // 缩放动画   
  78.     ScaleAnimation sa = new ScaleAnimation(   
  79.         0101,   
  80.         Animation.RELATIVE_TO_SELF, 0.5f,    
  81.         Animation.RELATIVE_TO_SELF, 0.5f);   
  82.     //    
  83.     sa.setDuration(2000);   
  84.     sa.setFillAfter(true);//   
  85.    
  86.     //    
  87.     as.addAnimation(sa);   
  88.    
  89.     // 播放动画   
  90.     iv_mainview.startAnimation(as);   
  91.    
  92.     // 动画播完进入下一个界面 :向导界面或者主界面   
  93.     //1、监听动画播放完的事件   
  94.        
  95.    
  96.   }   
  97.    
  98.   private void initView() {   
  99.     // 设置主界面   
  100.     setContentView(R.layout.onemain);   
  101.    
  102.     // 获取背景图片   
  103.     iv_mainview = (ImageView) findViewById(R.id.iv_splash_mainview);   
  104.    
  105.   }   
  106.    
  107.        
  108.      
  109.      
  110. }   
原创粉丝点击