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年的博客文章"2011.09.27(2)——— android ImageView上下同时拉伸的效果"探讨了如何实现一个自定义的ImageView,使得图像在垂直方向上能够同时在顶部和底部进行拉伸,以达到特定的视觉效果。这种效果通常...
这篇博客“2011.10.12(3)——— android Matrix学习02”可能深入探讨了Matrix类的使用方法,虽然具体的细节没有给出,但我们可以根据Matrix的基本功能和常见用法来展开讨论。 1. **Matrix类的介绍**:Matrix是...
标题中的“2011.10.09——— android ImageView放大缩小(2)”指的是一个关于Android平台中ImageView组件的优化技术,特别是如何处理图片的缩放问题。在Android应用开发中,ImageView是用于显示图像的常见组件,但...
计算机视觉大作业——三维重建.zip计算机视觉大作业——三维重建.zip计算机视觉大作业——三维重建.zip计算机视觉大作业——三维重建.zip计算机视觉大作业——三维重建.zip计算机视觉大作业——三维重建.zip计算机...
基于WXSS_WXML技术...序的开发——以西岭雪山为例_邹明荣.caj
5. **事件处理机制**:介绍ASP.NET中控件事件的工作原理,包括客户端事件和服务器端事件,以及如何编写事件处理程序。 6. **数据绑定**:讲述如何将数据源(如数据库)与Web控件绑定,以展示和操作数据,如GridView...
2918.D密钥分散管理系统——密钥确认算法实现 开题报告.doc
▕ ▕ ▕—————————————————————————————————————— ▕ ▕——[13.27MB] 【NPSWF32调试版本_11.1.102.55_debug】 ▕ ▕ ▕——[856 B] flashplayer.xpt ▕ ▕ ▕——[3.90MB...
这篇博客“2011.10.19——— android 显示一行内容并录制其音频”可能详细探讨了如何实现这个功能。虽然描述部分没有提供具体信息,但我们可以基于标签“源码”和“工具”来推测文章内容,以及从文件名...
Android中文翻译组是一个非盈利性质的开源组织,至今已超过300人报名参与,关于翻译组的介绍,请看这里。欢迎更多朋友加入,发邮件到over140@gmail.com申请加入。 Android中文翻译组WIKI网站:...
安卓app开发项目-实用源码——Android屏幕锁源码(源码).zip安卓app开发项目-实用源码——Android屏幕锁源码(源码).zip安卓app开发项目-实用源码——Android屏幕锁源码(源码).zip安卓app开发项目-实用源码——Android...
C语言项目——通讯录管理系统.zip C语言项目——通讯录管理系统.zip C语言项目——通讯录管理系统.zip C语言项目——通讯录管理系统.zip C语言项目——通讯录管理系统.zip C语言项目——通讯录管理系统.zip C语言...
错误更正...............................................................——建造合同...........................................................................................112企业会计准则——股份支付.....
2. 人体的皮肤 ——————————————————— 第三周 3. 交通小博士 ——————————————————— 第五周 4. 吃瓜果要讲卫生 ———————————————— -- 第七周 5. 维护公共卫生 ...
2. F2:文本窗口切换——在绘图过程中,F2可以在绘图窗口和文本输入窗口之间切换。 3. F3:对象捕捉——开启或关闭对象捕捉功能,确保精确绘图。 4. F7:栅格——显示或隐藏栅格,用于辅助定位。 5. F8:正交——...
C语言项目——窗体版图书管理系统.zip C语言项目——窗体版图书管理系统.zip C语言项目——窗体版图书管理系统.zip C语言项目——窗体版图书管理系统.zip C语言项目——窗体版图书管理系统.zip C语言项目——窗体版...
———————————————— 版权声明:本文为CSDN博主「MechMaster」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:...
1. **a copy of** —— 表示“一份...的复印件”。 2. **turn on** —— 打开(设备),**turn off** —— 关闭(设备)。 3. **save one's life** —— 挽救某人的生命。 4. **use sth. to do sth.** —— 使用某物...
2. "铁拐李的方便铲——不敢放手":铁拐李是道教八仙之一,他的拐杖是其法宝,这句歇后语比喻有重要的工具或手段不能轻易放弃。 3. "华佗开药方——手到病除":华佗是古代著名的医生,这句歇后语意味着处理问题或...
设计内容及要求 1.有六间病房,每个病房装有呼叫按钮;...2.1号优先级别最高,1—6优先级别依次降低; 3.当有病人紧急呼叫时发出5S的呼叫声; 4.护士值班室有一个数码显示管,可显示呼叫的病房号。