`

2011.09.01(2)——— android 处理双击事件

阅读更多
2011.09.01(2)——— android 处理双击事件
参考:http://lipeng88213.iteye.com/blog/838741

需求:一些透明的button 用来处理软件环境的改变

xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:layout_width="fill_parent"
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_height="fill_parent"  android:background="@drawable/splashview"
	>
	<Button 
		android:background="@android:color/transparent" 
		android:layout_height="30dip"
		android:layout_width="50dip"
		android:id="@+id/leftUp"
		android:layout_alignParentTop="true"
		android:layout_alignParentLeft="true"
		android:layout_margin="0px"
		android:padding="0px"
		/>
	<Button 
		android:background="@android:color/transparent" 
		android:layout_height="30dip"
		android:layout_width="50dip"
		android:id="@+id/rightUp"
		android:layout_alignParentTop="true"
		android:layout_alignParentRight="true"
		android:layout_margin="0px"
		android:padding="0px"
		/>
	<Button 
		android:background="@android:color/transparent" 
		android:layout_height="30dip"
		android:layout_width="50dip"
		android:id="@+id/leftDown"
		android:layout_alignParentBottom="true"
		android:layout_alignParentLeft="true"
		android:layout_margin="0px"
		android:padding="0px"
		/>
	<Button 
		android:background="@android:color/transparent" 
		android:layout_height="30dip"
		android:layout_width="50dip"
		android:id="@+id/rightDown"
		android:layout_alignParentBottom="true"
		android:layout_alignParentRight="true"
		android:layout_margin="0px"
		android:padding="0px"
		/>
</RelativeLayout>



activity:



import android.content.Context;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.Toast;

public class AboutActivity extends Activity {

	private Button leftUp;
	private Button rightUp;
	private Button leftDown;
	private Button rightDown;
	private ButtonOnTouchListener listener = new ButtonOnTouchListener();
	private Context mContext;
	//计算点击的次数
	private int count;
	//第一次点击的时间 long型
	private long firstClick;
	//最后一次点击的时间
	private long lastClick;
	//第一次点击的button的id
	private int firstId;
	//调试环境是否开启
	private boolean isDebugOpen = false;
	//日志环境是否开启
	private boolean isLogOpen = false;
	
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		setContentView(R.layout.about);
		
		mContext = this;
		leftUp = (Button)findViewById(R.id.leftUp);
		rightUp = (Button)findViewById(R.id.rightUp);
		leftDown = (Button)findViewById(R.id.leftDown);
		rightDown = (Button)findViewById(R.id.rightDown);
		
		leftUp.setOnTouchListener(listener);
		rightUp.setOnTouchListener(listener);
		leftDown.setOnTouchListener(listener);
		rightDown.setOnTouchListener(listener);
		
	}
	
	private class ButtonOnTouchListener implements OnTouchListener{

		@Override
		public boolean onTouch(View v, MotionEvent event) {
			if(event.getAction()==MotionEvent.ACTION_DOWN){
				//如果第二次点击 距离第一次点击时间过长   那么将第二次点击看为第一次点击
				if(firstClick!=0 && firstId!=0 && System.currentTimeMillis()-firstClick>300){
					count = 0;
					firstId = 0;
				}
				count++;
				if(count==1){
					firstClick = System.currentTimeMillis();
					//记录第一次点得按钮的id
					firstId = v.getId();
				}else if(count==2){
					lastClick = System.currentTimeMillis();
					//两次点击小于300ms 也就是连续点击
					if(lastClick-firstClick<300){
						//第二次点击的button的id
						int id = v.getId();
						//判断两次点击的button是否是同一个button
						if(id == firstId){
							switch(id){
								case R.id.leftUp:
									break;
								
								case R.id.rightUp:
									break;
									
								case R.id.leftDown:
									if(isLogOpen){//关闭日志环境
										Toast.makeText(mContext, "日志关闭", 0).show();
									}else{//打开日志环境
										Toast.makeText(mContext, "日志开启", 0).show();
									}
									isLogOpen = !isLogOpen;
									break;
									
								case R.id.rightDown:
									if(isDebugOpen){//关闭调试环境
										Toast.makeText(mContext, "调试关闭", 0).show();
									}else{//打开调试环境
										Toast.makeText(mContext, "调试开启", 0).show();
									}
									isDebugOpen = !isDebugOpen;
									break;
									
							}
						}
					}
					
					clear();
				}
			}
			return false;
		}
		//清空状态
		private void clear(){
			count = 0;
			firstClick = 0;
			lastClick = 0;
			firstId = 0;
		}
		
	}
	
}




分享到:
评论

相关推荐

    2011.09.27(2)——— android ImageView上下同时拉伸的效果

    这篇2011年的博客文章"2011.09.27(2)——— android ImageView上下同时拉伸的效果"探讨了如何实现一个自定义的ImageView,使得图像在垂直方向上能够同时在顶部和底部进行拉伸,以达到特定的视觉效果。这种效果通常...

    2011.10.12(3)——— android Matrix学习02

    这篇博客“2011.10.12(3)——— android Matrix学习02”可能深入探讨了Matrix类的使用方法,虽然具体的细节没有给出,但我们可以根据Matrix的基本功能和常见用法来展开讨论。 1. **Matrix类的介绍**:Matrix是...

    2011.10.09——— android ImageView放大缩小(2)

    标题中的“2011.10.09——— android ImageView放大缩小(2)”指的是一个关于Android平台中ImageView组件的优化技术,特别是如何处理图片的缩放问题。在Android应用开发中,ImageView是用于显示图像的常见组件,但...

    计算机视觉大作业-三维重建.zip

    计算机视觉大作业——三维重建.zip计算机视觉大作业——三维重建.zip计算机视觉大作业——三维重建.zip计算机视觉大作业——三维重建.zip计算机视觉大作业——三维重建.zip计算机视觉大作业——三维重建.zip计算机...

    基于WXSS_WXML技术...序的开发——以西岭雪山为例_邹明荣.caj

    基于WXSS_WXML技术...序的开发——以西岭雪山为例_邹明荣.caj

    5.ASP.NET.基础教程——C#案例版.rar

    5. **事件处理机制**:介绍ASP.NET中控件事件的工作原理,包括客户端事件和服务器端事件,以及如何编写事件处理程序。 6. **数据绑定**:讲述如何将数据源(如数据库)与Web控件绑定,以展示和操作数据,如GridView...

    2918.D密钥分散管理系统——密钥确认算法实现 开题报告.doc

    2918.D密钥分散管理系统——密钥确认算法实现 开题报告.doc

    NPSWF32调试版本.rar

    ▕ ▕ ▕—————————————————————————————————————— ▕ ▕——[13.27MB] 【NPSWF32调试版本_11.1.102.55_debug】 ▕ ▕ ▕——[856 B] flashplayer.xpt ▕ ▕ ▕——[3.90MB...

    2011.10.19——— android 显示一行内容并录制其音频

    这篇博客“2011.10.19——— android 显示一行内容并录制其音频”可能详细探讨了如何实现这个功能。虽然描述部分没有提供具体信息,但我们可以基于标签“源码”和“工具”来推测文章内容,以及从文件名...

    Android中文翻译组——Android开发者指南(2).chm

    Android中文翻译组是一个非盈利性质的开源组织,至今已超过300人报名参与,关于翻译组的介绍,请看这里。欢迎更多朋友加入,发邮件到over140@gmail.com申请加入。 Android中文翻译组WIKI网站:...

    安卓app开发项目-实用源码——Android屏幕锁源码(源码).zip

    安卓app开发项目-实用源码——Android屏幕锁源码(源码).zip安卓app开发项目-实用源码——Android屏幕锁源码(源码).zip安卓app开发项目-实用源码——Android屏幕锁源码(源码).zip安卓app开发项目-实用源码——Android...

    C语言项目——通讯录管理系统.zip

    C语言项目——通讯录管理系统.zip C语言项目——通讯录管理系统.zip C语言项目——通讯录管理系统.zip C语言项目——通讯录管理系统.zip C语言项目——通讯录管理系统.zip C语言项目——通讯录管理系统.zip C语言...

    2021-2022年收藏的精品资料企业会计准则制度大全.doc

    错误更正...............................................................——建造合同...........................................................................................112企业会计准则——股份支付.....

    综合实践活动二年级(下册)教(学)案.doc

    2. 人体的皮肤 ——————————————————— 第三周 3. 交通小博士 ——————————————————— 第五周 4. 吃瓜果要讲卫生 ———————————————— -- 第七周 5. 维护公共卫生 ...

    天正建筑CAD快捷键-较全常用.doc

    2. F2:文本窗口切换——在绘图过程中,F2可以在绘图窗口和文本输入窗口之间切换。 3. F3:对象捕捉——开启或关闭对象捕捉功能,确保精确绘图。 4. F7:栅格——显示或隐藏栅格,用于辅助定位。 5. F8:正交——...

    C语言项目——窗体版图书管理系统.zip

    C语言项目——窗体版图书管理系统.zip C语言项目——窗体版图书管理系统.zip C语言项目——窗体版图书管理系统.zip C语言项目——窗体版图书管理系统.zip C语言项目——窗体版图书管理系统.zip C语言项目——窗体版...

    Help And Manual v6.2.0.2603 汉化包——请下载这个

    Help And Manual v6.2.0.2603 的汉化包 该版本发布的程序只能选择英文版和德文版,本汉化包解压缩后放到安装文件夹,要使用汉化的界面,需每次启动程序前运行“汉化版.reg”文件清理一次注册表。...

    qt窗口部件——其他窗口部件代码

    ———————————————— 版权声明:本文为CSDN博主「MechMaster」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:...

    中考英语外研版初二下模块4练习学案02:短语总结+练习及解析.docx

    1. **a copy of** —— 表示“一份...的复印件”。 2. **turn on** —— 打开(设备),**turn off** —— 关闭(设备)。 3. **save one's life** —— 挽救某人的生命。 4. **use sth. to do sth.** —— 使用某物...

    方的歇后语.pdf

    2. "铁拐李的方便铲——不敢放手":铁拐李是道教八仙之一,他的拐杖是其法宝,这句歇后语比喻有重要的工具或手段不能轻易放弃。 3. "华佗开药方——手到病除":华佗是古代著名的医生,这句歇后语意味着处理问题或...

Global site tag (gtag.js) - Google Analytics