代码小白白,遇到问题记录下,下次就不用翻之前的代码了
调用方法:
@Override
protected void initHead() {
mHandler = new MyHandler(this);
}
1、
Message msg = new Message();
msg.arg1 = 0;
msg.what = mHandler.ANIMATION_STATE;
mHandler.sendMessage(msg);
2、
mHandler.sendEmptyMessageAtTime(mHandler.ANIMATION_START, 16);
回收:
@Override
protected void destroyClose() {
super.destroyClose();
if(mHandler != null) mHandler.removeCallbacksAndMessages(null);
}
主代码:
protected MyHandler mHandler;
protected class MyHandler extends Handler{
protected final int ANIMATION_START = 100; //启动倒计时背景渲染动画
private final int ANIMATION_STATE = 101; //更新倒计时动画进度
// SoftReference<Activity> 也可以使用软应用 只有在内存不足的时候才会被回收
private final WeakReference<Activity> mActivity;
protected MyHandler(Activity activity) {
mActivity = new WeakReference<>(activity);
}
@Override
public void handleMessage(Message msg) {
Activity activity = mActivity.get();
if (activity != null){
//做操作
switch (msg.what) {
case ANIMATION_START: // 启动倒计时背景渲染动画
setStartRunState(true);
break;
case ANIMATION_STATE: // 更新倒计时动画进度
int state = msg.arg1;
switch (state){
case 4:
startCountDownAnim(state - 1,"2");
break;
case 3:
startCountDownAnim(state - 1,"1");
break;
case 2:
startCountDownAnim(state - 1,"GO");
break;
case 1: //缩放动画
setStartRunState(false);
break;
case 0: //开始跑步
btn_runc_pause.setVisibility(View.VISIBLE);
break;
}
break;
}
}
super.handleMessage(msg);
}
}