//首先创建一个Handler对象
Handler handler=new Handler();
//然后创建一个Runnable对像
Runnable runnable=new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
//要做的事情,这里再次调用此Runnable对象,以实现每两秒实现一次的定时器操作
handler.postDelayed(this, 2000);
}
};
![[提示]](/graphics/tip.png) | 提示 |
---|
请使用单例模式,否则每次都拿到 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);