• Android程序开始的等待动画或LOGO


    在进入程序前,一般都要有一个欢迎图片LOGO或者动画,等待几秒后隐藏Logo或做Intent跳转:

    可以使用HandlerThread新建一个线程来执行等待动作,也可以使用Android的TimerTask:

    1.HandlerThread:

    Java代码  收藏代码
    1. public class WelcomeAct extends Activity {  
    2.       
    3.     protected static final String TAG = "WelcomeAct";  
    4.       
    5.     private Handler handler; //因为要重写构造方法,所以不能用匿名内部类  
    6.       
    7.     @Override  
    8.     protected void onCreate(Bundle savedInstanceState) {  
    9.         super.onCreate(savedInstanceState);  
    10.         // 设置登录无标题栏  
    11.         requestWindowFeature(Window.FEATURE_NO_TITLE);  
    12.         setContentView(R.layout.welcome);  
    13.   
    14.         HandlerThread myThread = new HandlerThread("myHandlerThread");  
    15.         myThread.start();  
    16.         handler = new myHandler(myThread.getLooper());  
    17.         handler.post(new Runnable() {  
    18.             @Override  
    19.             public void run() {  
    20.                 try {  
    21.                     //耗时的操作  
    22.                     Thread.sleep(2500);  
    23.                     //handler主要用于异步消息的处理,使用sendMessage()后,方法立即返回,Message放入消息队列,  
    24.                     //等待Message出消息队列,由handlerMessage(Message msg)通知UI线程子线程已经挂起,并使用返回的msg。  
    25.                     handler.sendMessage(handler.obtainMessage());  
    26.                 } catch (InterruptedException e) {  
    27.                     e.printStackTrace();  
    28.                 }  
    29.             }  
    30.         });  
    31.     }  
    32.       
    33.     class myHandler extends Handler{  
    34.           
    35.         public myHandler(Looper looper) {  
    36.             super(looper);  
    37.         }  
    38.   
    39.         //负责从消息队列中取消息给UI线程  
    40.         @Override  
    41.         public void handleMessage(Message msg) {  
    42.             super.handleMessage(msg);  
    43.             Intent intent = new Intent(WelcomeAct.this, LoginAct.class);  
    44.             startActivity(intent);  
    45.         }  
    46.     }  
    47. }  

     2.使用TimerTask:

    Java代码  收藏代码
    1. public class WelcomeAct extends Activity {  
    2.       
    3.     protected static final int LOGINOVER = 0;  
    4.   
    5.     protected static final String TAG = "WelcomeAct";  
    6.       
    7.     private Handler handler; //因为要重写构造方法,所以不能用匿名内部类  
    8.       
    9.     @Override  
    10.     protected void onCreate(Bundle savedInstanceState) {  
    11.         super.onCreate(savedInstanceState);  
    12.         // 设置登录无标题栏  
    13.         requestWindowFeature(Window.FEATURE_NO_TITLE);  
    14.         setContentView(R.layout.welcome);  
    15.         ProgressBar loading = (ProgressBar)findViewById(R.id.loading);  
    16.         loading.setVisibility(View.VISIBLE);  
    17.         HandlerThread myThread = new HandlerThread("myHandlerThread");  
    18.         myThread.start();  
    19.         handler = new Handler(){  
    20.             @Override  
    21.             public void handleMessage(Message msg) {  
    22.                 if(msg.what == LOGINOVER){  
    23.                     Log.i(TAG, Thread.currentThread().getName());  
    24.                     Intent intent = new Intent(WelcomeAct.this, LoginAct.class);  
    25.                     startActivity(intent);  
    26.                 }  
    27.             }  
    28.               
    29.         };  
    30.         tt.run();  
    31.     }  
    32.       
    33.     TimerTask tt = new TimerTask() {  
    34.         @Override  
    35.         public void run() {  
    36.             Log.i(TAG, Thread.currentThread().getName());  
    37.             handler.sendMessageDelayed(handler.obtainMessage(LOGINOVER), 3000);  
    38.         }  
    39.     };  
    40. }  

    也可设计为没有Intent跳转,使用View.setVisibility(View.GONE);和 View.VISIBLE来达到想要的效果。

    使用TimerTask,打印线程名可以看出,系统没有新开线程,而且达到了阻塞等待的目的,代码量小,推荐用。

  • 相关阅读:
    创建zabbix监控,添加监控机(server、agent、windows)
    KVM虚拟化平台简介及环境部署
    利用nginx的stream模块实现内网端口的转发代理
    Mysql主主同步+keepalived实现高可用
    基于 MHA 的 MySQL 高可用方案
    mysql基于Amoeba(变形虫)实现读写分离
    mysql主从异步复制
    基于mysqld_multi实现MySQL多实例多进程配置
    基于Haproxy+Keepalived构建高可用负载均衡集群
    yum 安装报错The GPG keys listed for the "CentOS-7
  • 原文地址:https://www.cnblogs.com/tonglingqijie/p/4692087.html
Copyright © 2020-2023  润新知