Handler实现app启动动画

来源:互联网 发布:newsql数据库哪个最好 编辑:程序博客网 时间:2024/06/05 20:14

java文件

package com.example.animation;



import android.annotation.SuppressLint;
import android.app.Activity;




import android.os.Bundle;
import android.os.Handler;
import android.os.Message;


import android.widget.ViewFlipper;


@SuppressLint("HandlerLeak")
public class MainActivity extends Activity {

private ViewFlipper allFlipper;
private Handler handler = new Handler(){
    @Override
    public void handleMessage(Message msg) {
    // TODO Auto-generated method stub
    switch (msg.what) {
    case 1:
    //切换到主页面
    allFlipper.setDisplayedChild(1);
    break;
    }
    }
    };
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        allFlipper = (ViewFlipper) findViewById(R.id.allFlipper);
        new Handler().postDelayed(new Runnable() {
@Override
public void run() {
handler.sendEmptyMessage(1); //给UI主线程发送消息
}
        }, 3000); //启动等待3秒钟
    }

}



xml文件

<ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android"
   
    android:id="@+id/allFlipper"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >


    <RelativeLayout
         android:id="@+id/splashLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/two" >


    </RelativeLayout>
    <RelativeLayout
        android:id="@+id/homeLayout"
       
        android:layout_width="match_parent"
        android:layout_height="match_parent" 
        
        >
        <TextView
            
               android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/textview1"
        android:text="Hello world!"
         android:textColor="#8DD74E"
            
            ></TextView>
    </RelativeLayout>


</ViewFlipper>






再附上一个handler+runnable的方法  (哎,只能说我昨天的想法没办法实现,今天利用ViewFlipper轻松实现一样的启动动画)

package com.example.animation;


import android.annotation.SuppressLint;
import android.app.Activity;




import android.os.Bundle;
import android.os.Handler;
import android.os.Message;


import android.widget.ViewFlipper;


@SuppressLint("HandlerLeak")
public class MainActivity extends Activity {

private ViewFlipper allFlipper;
/* private Handler handler = new Handler(){
    @Override
    public void handleMessage(Message msg) {
    // TODO Auto-generated method stub
    switch (msg.what) {
    case 1:
    //切换到主页面
    allFlipper.showNext();
   
    break;
    }
    }
    };*/
  private Handler handler=new Handler();
  Runnable runnable=new Runnable() {
public void run() {
allFlipper.showNext();
handler.postDelayed(null, 6000);  //这句话主要是和主线程的postDelayed作对比,结果是这句话并没软用,当然只要你重写第一个参数我只会 做无限循环,还挺好用的 嘿嘿。
}
};
   
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        allFlipper = (ViewFlipper) findViewById(R.id.allFlipper);
     /*   handler.postDelayed(new Runnable() {
@Override
public void run() {
handler.sendEmptyMessage(1); //给UI主线程发送消息
}
        }, 3000); //启动等待3秒钟
*/    
        handler.postDelayed(runnable,2000); //延迟两秒
    }
    
}

0 0