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;
}
}
}
分享到:
相关推荐
基于因子分析的我国A股上市...争力评价——以医药企业为例_张澳.caj
python项目——微信机器人.zip python项目——微信机器人.zip python项目——微信机器人.zip python项目——微信机器人.zip python项目——微信机器人.zip python项目——微信机器人.zip python项目——微信机器人....
2,jdk-170.tar.gz ——————————JDK1.7deb包 3,switch_java.sh -------------------------java其它版本切换 4,check_java.sh———————————版本核对 注意:使用命令接口切换时,需要将自己配置的...
01 java面试——北京-百度-Java中级.pdf 02 java面试——北京-京东-Java中级.pdf 03 java面试——广州-唯品会-Java大数据开发工程师.pdf 04 java面试——杭州-阿里云-Java中级.pdf 05 java面试——杭州-蚂蚁金服-...
python项目——Word助手.zip python项目——Word助手.zip python项目——Word助手.zip python项目——Word助手.zip python项目——Word助手.zip python项目——Word助手.zip python项目——Word助手.zip python项目...
嵌入式成品项目——无线接收时钟.zip嵌入式成品项目——无线接收时钟.zip嵌入式成品项目——无线接收时钟.zip嵌入式成品项目——无线接收时钟.zip嵌入式成品项目——无线接收时钟.zip嵌入式成品项目——无线接收时钟...
C语言项目——MP3音乐播放器.zip C语言项目——MP3音乐播放器.zip C语言项目——MP3音乐播放器.zip C语言项目——MP3音乐播放器.zip C语言项目——MP3音乐播放器.zip C语言项目——MP3音乐播放器.zip C语言项目——...
python项目——RCQ读者书库.zip python项目——RCQ读者书库.zip python项目——RCQ读者书库.zip python项目——RCQ读者书库.zip python项目——RCQ读者书库.zip python项目——RCQ读者书库.zip python项目——RCQ...
微信小程序——移动端商城(截图+源码).zip 微信小程序——移动端商城(截图+源码).zip 微信小程序——移动端商城(截图+源码).zip 微信小程序——移动端商城(截图+源码).zip 微信小程序——移动端商城(截图+...
微信小程序——用户反馈组件(截图+源码).zip 微信小程序——用户反馈组件(截图+源码).zip 微信小程序——用户反馈组件(截图+源码).zip 微信小程序——用户反馈组件(截图+源码).zip 微信小程序——用户反馈...
《.NET Framework游戏编程入门——模拟魔兽学院永远的羁绊》 在计算机编程的世界中,游戏开发是一项富有挑战性和创新性的任务。对于初学者来说,理解游戏编程的基本原理和实践技巧是迈向专业游戏开发的第一步。本文...
2. **Android UI开发**:Android的用户界面主要由XML布局文件定义,结合Java或Kotlin代码实现动态功能。仪表盘可能会涉及到`View`、`Widget`以及自定义视图的创建,例如`TextView`、`ProgressBar`等。 3. **Android...
2. 冷——热 3. 早——晚 4. 长——短 5. 甜——苦 6. 慢——快 7. 黑——白 8. 近——远 9. 前——后 10. 冷淡——热情 11. 黑暗——光明 12. 南——北 13. 低——高 14. 闲——忙 15. 开——关 16. 哭——笑 17. ...
Android support.v7包
———————————————— 版权声明:本文为CSDN博主「MechMaster」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:...
Android中文翻译组——Android中文API合集(4).chm
微信小程序——小游戏-别踩白块(截图+源码).zip 微信小程序——小游戏-别踩白块(截图+源码).zip 微信小程序——小游戏-别踩白块(截图+源码).zip 微信小程序——小游戏-别踩白块(截图+源码).zip 微信小程序...
java毕业设计——基于ssm的仿微博系统设计与实现(源码+数据库).zip java毕业设计——基于ssm的仿微博系统设计与实现(源码+数据库).zip java毕业设计——基于ssm的仿微博系统设计与实现(源码+数据库).zip java毕业...
微信小程序——学校管理小程序以重邮为例(截图+源码).zip 微信小程序——学校管理小程序以重邮为例(截图+源码).zip 微信小程序——学校管理小程序以重邮为例(截图+源码).zip 微信小程序——学校管理小程序以...
java毕业设计——基于ssm的房屋租赁系统设计与实现(源码+数据库).zip java毕业设计——基于ssm的房屋租赁系统设计与实现(源码+数据库).zip java毕业设计——基于ssm的房屋租赁系统设计与实现(源码+数据库).zip java...