直接上代码:
1.先创建一个DoubleClick抽象类
package com.demo.safetydrill.utils.system;
import android.content.Context;
import android.widget.Toast;
/**
* @author Geek_Soledad (66704238@51uc.com)
*/
public abstract class DoubleClick {
protected Context mContext;
/**
* 开始任务的时间。
*/
private long mStartTime;
/**
* 构造方法,初始化Context对象及开始的任务时间。
*
* @param context
*/
public DoubleClick(Context context) {
mContext = context;
mStartTime = -1;
}
/**
* 当某个动作要双击才执行时,调用此方法。
*
* @param delayTime
* 判断双击的时间。
* @param msg
* 当第一次点击时,弹出的提示信息。如果为null,则不作提示。
*/
public void doDoubleClick(int delayTime, String msg) {
if (!doInDelayTime(delayTime)) {
showMsgInToast(delayTime, msg);
}
}
/**
* 如果是在在指定的时间内则执行doOnDoubleClick,否则返回false。
*
* @param delayTime
* 指定的延迟时间。
* @return 当且仅当执行了doOnDoubleClick时返回true,否则返回false。
*/
private boolean doInDelayTime(int delayTime) {
long nowTime = System.currentTimeMillis();
if (nowTime - mStartTime <= delayTime) {
doOnDoubleClick();
return true;
}
mStartTime = nowTime;
return false;
}
/**
* 当某个动作要双击才执行时,调用此方法。
*
* @param delayTime
* 判断双击的时间。
* 当第一次点击时,弹出的提示信息。如果为null,则不作提示。
*/
public void doDoubleClick(int delayTime, int msgResid) {
long nowTime = System.currentTimeMillis();
if (nowTime - mStartTime <= delayTime) {
doOnDoubleClick();
} else {
mStartTime = nowTime;
showMsgInToast(delayTime, msgResid);
}
}
/**
* 在双击之后执行的事情。
*/
abstract protected void doOnDoubleClick();
/**
* 显示提示信息。
*
* @param msg
* 要显示的信息。
*/
private void showMsgInToast(int delayTime, String msg) {
if (msg != null) {
Toast.makeText(mContext, msg, delayTime).show();
}
}
/**
* 显示提示信息。
*
* 要显示的信息。
*/
private void showMsgInToast(int delayTime, int msgResid) {
Toast.makeText(mContext, msgResid, delayTime).show();
}
}
2.实现抽象类ExitDoubleClick
package com.demo.safetydrill.utils.system;
import android.app.Activity;
import android.content.Context;
/**
* 双击退出Activity的类。
*
* @author Geek_Soledad (66704238@51uc.com)
*/
public class ExitDoubleClick extends DoubleClick {
private static ExitDoubleClick exitDoubleClick;
private ExitDoubleClick(Context context) {
super(context);
}
/**
* 返回一个双击退出的实例。
*
* @param context
* @return ExitDoubleClick
*/
public static synchronized ExitDoubleClick getInstance(Context context) {
if (exitDoubleClick == null) {
exitDoubleClick = new ExitDoubleClick(context);
}
return exitDoubleClick;
}
/**
* 双击之后退出。
*/
@Override
protected void doOnDoubleClick() {
//退出程序
// OpenHelperManager.getHelper(BaseApp.mApp, DatabaseHelper.class).close();
((Activity) mContext).finish();
destroy();
}
/**
* 双击退出Activity,如果msg为null,而默认显示的提示语为"再按一次退出"。
*/
@Override
public void doDoubleClick(int delayTime, String msg) {
if (msg == null || msg.equals("")) {
msg = "再按一次退出";
}
super.doDoubleClick(delayTime, msg);
}
private static void destroy() {
exitDoubleClick = null;
}
}
3.在app的首页调用该类:
//点击两次才推出
@Override
public void onBackPressed() {
ExitDoubleClick exitDoubleClick = ExitDoubleClick.getInstance(this);
exitDoubleClick.doDoubleClick(2000, null);
}
今天的文章android 双击退出Activity类实现分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/31230.html