Home | 简体中文 | 繁体中文 | 杂文 | Github | 知乎专栏 | Facebook | Linkedin | Youtube | 打赏(Donations) | About
知乎专栏

8.4. 循环执行

		
//首先创建一个Handler对象
Handler handler=new Handler();   
//然后创建一个Runnable对像
Runnable runnable=new Runnable(){  
   @Override  
   public void run() {  
    // TODO Auto-generated method stub  
    //要做的事情,这里再次调用此Runnable对象,以实现每两秒实现一次的定时器操作  
    handler.postDelayed(this, 2000);  
   }  
};
  		
		
[提示]提示
请使用单例模式,否则每次都拿到 handler 都是新对象,无法管理已经运行的对象。
		
//使用PostDelayed方法,调用此Runnable对象  
handler.postDelayed(runnable, 2000);
  
//关闭此定时器,可以这样操作
handler.removeCallbacks(runnable);  

//移除所有的消息
handler.removeCallbacksAndMessages(null);		
		
		

下面用 ImageView 实现 Loading... 动画,实现方式,是吧图片 360 度旋转。

		
                <ImageView
                    android:id="@+id/imageViewLoading"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_gravity="center_horizontal"
                    android:scaleType="fitCenter"
                    android:visibility="invisible"
                    android:src="@android:drawable/ic_menu_rotate" />
		
		
		
		
		        ImageView imageViewLoading = view.findViewById(R.id.imageViewLoading);
		
 				Handler handler = new Handler(Looper.getMainLooper());
                Runnable runnable = new Runnable() {
                    int count = 1;

                    @Override
                    public void run() {
                        handler.postDelayed(this, 50);
                        imageViewLoading.setRotation(count);
                        //每隔一段时间要重复执行的代码
//                        System.out.println("第" + (count++) + "次执行");
                        if (count == 360) {
                            handler.removeCallbacks(this);
                            imageViewLoading.setVisibility(View.INVISIBLE);
                            linearLayoutSpaek.setVisibility(View.VISIBLE);
                        }
                    }
                };
                handler.postDelayed(runnable, 100);