android 双击退出Activity类实现

android 双击退出Activity类实现直接上代码:1.先创建一个DoubleClick抽象类packagecom.demo.safetydrill.utils.system;importandroid.content.Context;importandroid.widget.Toast;/***@authorGeek_Soledad(66704238@51uc.com)*/publicabstractclassDoubleClick{ protectedContextmContext;

android

直接上代码:

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

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注