区分在Android上的ImageView单单击和双击 [英] Differentiate Single click and double click of a imageView in android
本文介绍了区分在Android上的ImageView单单击和双击的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我曾尝试以下code区分单单击和双击。只需点击一下,就可以了。当我双击ImageView的,code之内的两次单单击和双击一部分来执行。
私有静态最后长DOUBLE_ preSS_INTERVAL = 250; //在米利斯
私人终于pressTime;
布尔mHasDoubleClicked;img_feat_orgn_item.setOnClickListener(新OnClickListener(){
@覆盖
公共无效的onClick(视图v){
// TODO自动生成方法存根
findDoubleClick();
}
});私人布尔findDoubleClick(){
//获取纳米秒当前时间。
长pressTime = System.currentTimeMillis的();
//如果双击...
如果(pressTime - 最后pressTime< = DOUBLE_ preSS_INTERVAL){
mHasDoubleClicked = TRUE;
startActivity(新意图(
Wv_HomePage.this,
NewDonation.class));
//双击事件....
}其他{//如果不是双击....
mHasDoubleClicked = FALSE;
处理程序将myHandler =新的处理程序(){
公共无效的handleMessage(消息m){
布尔mHasDoubleClicked = FALSE;
如果(!mHasDoubleClicked){
//单点击事件
feature_class_val = listData_Feature_Organization
获得(j)条;
意向意图=新意图(
Wv_HomePage.this,
OrganizationDetails.class);
束B =新包();
b.putString(orgn_name
feature_class_val.name);
intent.putExtras(二);
startActivity(意向); }
}
};
消息m =新的Message();
myHandler.sendMessageDelayed(男,DOUBLE_ preSS_INTERVAL);
}
最后pressTime = pressTime;
返回mHasDoubleClicked;
}
解决方案
只是一个小变化,我的code正常工作。我把mHasDoubleClicked布尔内部处理,这使得麻烦。下面code工作。
img_feat_orgn_item.setOnClickListener(新OnClickListener(){
@覆盖
公共无效的onClick(视图v){
// TODO自动生成方法存根
findDoubleClick();
如果(mHasDoubleClicked){
Log.v(双击,双击);
startActivity(新意图(
Wv_HomePage.this,
NewDonation.class));
}
}
}); 私人布尔findDoubleClick(){
//获取纳米秒当前时间。
长pressTime = System.currentTimeMillis的();
//如果双击...
如果(pressTime - 最后pressTime< = DOUBLE_ preSS_INTERVAL){
mHasDoubleClicked = TRUE; //双击事件....
}其他{//如果不是双击....
mHasDoubleClicked = FALSE;
处理程序将myHandler =新的处理程序(){
公共无效的handleMessage(消息m){ 如果(!mHasDoubleClicked){
//单点击事件
feature_class_val = listData_Feature_Organization
获得(j)条;
意向意图=新意图(
Wv_HomePage.this,
OrganizationDetails.class);
束B =新包();
b.putString(orgn_name
feature_class_val.name);
intent.putExtras(二);
startActivity(意向); }
}
};
消息m =新的Message();
myHandler.sendMessageDelayed(男,DOUBLE_ preSS_INTERVAL);
}
最后pressTime = pressTime;
返回mHasDoubleClicked;
}
I have tried the following code to differentiate single click and double click. Single click is ok. When I double click the imageview, code inside both the single click and double click part execute.
private static final long DOUBLE_PRESS_INTERVAL = 250; // in millis
private long lastPressTime;
boolean mHasDoubleClicked;
img_feat_orgn_item.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
findDoubleClick();
}
});
private boolean findDoubleClick() {
// Get current time in nano seconds.
long pressTime = System.currentTimeMillis();
// If double click...
if (pressTime - lastPressTime <= DOUBLE_PRESS_INTERVAL) {
mHasDoubleClicked = true;
startActivity(new Intent(
Wv_HomePage.this,
NewDonation.class));
// double click event....
} else { // If not double click....
mHasDoubleClicked = false;
Handler myHandler = new Handler() {
public void handleMessage(Message m) {
boolean mHasDoubleClicked = false;
if (!mHasDoubleClicked) {
// single click event
feature_class_val = listData_Feature_Organization
.get(j);
Intent intent = new Intent(
Wv_HomePage.this,
OrganizationDetails.class);
Bundle b = new Bundle();
b.putString("orgn_name",
feature_class_val.name);
intent.putExtras(b);
startActivity(intent);
}
}
};
Message m = new Message();
myHandler.sendMessageDelayed(m, DOUBLE_PRESS_INTERVAL);
}
lastPressTime = pressTime;
return mHasDoubleClicked;
}
解决方案
just a little change and my code works fine. I placed the mHasDoubleClicked boolean inside handler, that makes the trouble. The below code works.
img_feat_orgn_item.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
findDoubleClick();
if (mHasDoubleClicked) {
Log.v("double click","double click");
startActivity(new Intent(
Wv_HomePage.this,
NewDonation.class));
}
}
});
private boolean findDoubleClick() {
// Get current time in nano seconds.
long pressTime = System.currentTimeMillis();
// If double click...
if (pressTime - lastPressTime <= DOUBLE_PRESS_INTERVAL) {
mHasDoubleClicked = true;
// double click event....
} else { // If not double click....
mHasDoubleClicked = false;
Handler myHandler = new Handler() {
public void handleMessage(Message m) {
if (!mHasDoubleClicked) {
// single click event
feature_class_val = listData_Feature_Organization
.get(j);
Intent intent = new Intent(
Wv_HomePage.this,
OrganizationDetails.class);
Bundle b = new Bundle();
b.putString("orgn_name",
feature_class_val.name);
intent.putExtras(b);
startActivity(intent);
}
}
};
Message m = new Message();
myHandler.sendMessageDelayed(m, DOUBLE_PRESS_INTERVAL);
}
lastPressTime = pressTime;
return mHasDoubleClicked;
}
这篇关于区分在Android上的ImageView单单击和双击的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文