关于android 控件的单击双击以及长按的问题

  今天有需求是要监听一个按键的单击双击以及长按事件,在网上找了很多demo但是都不是特别理想啊.不过后来总算是看别人的代码看出了一点思路.由于本人是菜鸟,可能会有各种问题或者讲得不对的原因,希望大家见谅,共同进步.

  废话不多讲,代码如下:protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt = (Button) findViewById(R.id.idbt);
bt.setOnClickListener(this);
bt.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "长按事件", Toast.LENGTH_SHORT)
.show();
return true;
}
});
}这里是初始化bttton.longclick绑定监听后若有执行返回true是不让系统往下继续执行.

@Override
public void onClick(View v) {
chooseNowState();
}

private long firstTime;

private void chooseNowState() {
// TODO Auto-generated method stub
if (firstTime == 0) {
firstTime = System.currentTimeMillis();
// 单击
handler.sendEmptyMessageDelayed(1, 1000);
} else {
if (System.currentTimeMillis() - firstTime < 800) {
// 双击
handler.removeMessages(1);//要取消掉上个正在准备发送的消息.
handler.sendEmptyMessage(2);
}
}
}
private Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case 1:
Toast.makeText(MainActivity.this, "单击咯", Toast.LENGTH_SHORT).show();
firstTime = 0;
break;
case 2:
Toast.makeText(MainActivity.this, "双击咯", Toast.LENGTH_SHORT).show();
firstTime = 0;
break;
default:
break;
}
};
};通过handler的方式去判断800ms内有没有第二下按下.若没有1s后执行单击事件,否则执行双击.

   第一次发帖,虽然现在还是菜鸟,但是本着一颗程序员要乐于分享的精神,希望大家共同进步.



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值