一个双击返回键退出的demo

来源:互联网 发布:淘宝死人衣服分辨 编辑:程序博客网 时间:2024/05/22 02:19
package com.f1game.tools;


import android.app.Activity;
import android.content.Context;


import com.f1game.songshu.EmulatorActivity;


public class ExitDoubleClick extends DoubleClick {


private static ExitDoubleClick exitDoubleClick;


private ExitDoubleClick(Context context) {
super(context);
}


public static synchronized ExitDoubleClick getInstance(Context context) {
if (exitDoubleClick == null) {
exitDoubleClick = new ExitDoubleClick(context);
}
return exitDoubleClick;
}


@Override
protected void afterDoubleClick() {
((EmulatorActivity) mContext).pauseEmulator();
((EmulatorActivity) mContext).quickSave();
((Activity) mContext).finish();
destroy();


}


@Override
public void doDoubleClick(int delayTime, String msg) {
if (msg == null || msg.equals("")) {
msg = "再按一次退出!";
}
super.doDoubleClick(delayTime, msg);
}


private static void destroy() {
exitDoubleClick = null;
}

}





package com.f1game.tools;


import android.content.Context;
import android.widget.Toast;


/**
 * @author Geek_Soledad (66704238@51uc.com)
 */
public abstract class DoubleClick {
protected Context mContext;


private long mStartTime;


public DoubleClick(Context context) {
mContext = context;
mStartTime = -1;
}


public void doDoubleClick(int delayTime, String msg) {
if (!doInDelayTime(delayTime)) {
Toast.makeText(mContext, msg, delayTime).show();
}
}


private boolean doInDelayTime(int delayTime) {
long nowTime = System.currentTimeMillis();
if (nowTime - mStartTime <= delayTime) {
afterDoubleClick();
return true;
}
mStartTime = nowTime;
return false;
}


public void doDoubleClick(int delayTime, int msgResid) {
long nowTime = System.currentTimeMillis();
if (nowTime - mStartTime <= delayTime) {
afterDoubleClick();
} else {
mStartTime = nowTime;
Toast.makeText(mContext, msgResid, delayTime).show();
}
}


abstract protected void afterDoubleClick();


}



使用方法:

create里面

ExitDoubleClick = ExitDoubleClick.getInstance(this);

if (keyCode == KeyEvent.KEYCODE_BACK) {
ExitDoubleClick.doDoubleClick(2000, "再按一次退出!");
return true;
}

这里是按键key onkeydown里面。


0 0
原创粉丝点击