问题
I have to place an double click event on Image view..Whenever I double click on Image ,It sshould be Zoom.But I found that there is no such event like double click in Image Veiw. Can Anyone Tell me How To DO it?? Thanks in Advance..
回答1:
Try this approach:
- add
boolean doubleClick = false;
- and
Handler doubleHandler
- in onClick check if
doubleClick is true
- if true, it is a double click
- if not, set
doubleClick
to true and use the handlerspostDelayed
to set it back to false after i.e. 500ms
回答2:
whenever the onClick() is called the new instance of Handler is created, if Handler object is instatiated inside onClick(). So, instatiate handler outside onClick().
boolean isDoubleCliked=false;
Handler handler=new Handler();
Runnable r=new Runnable(){
@Override
public void run(){
//Actions when Single Clicked
isDoubleCliked=false;
}
}
tv.setOnClickListener(new onClickListener){
@Override
public void onClick(View view){
if(isDoubleClicked){
//Actions when double Clicked
isDoubleCliked=false;
//remove callbacks for Handlers
handler.removeCallbacks(r);
}else{
isDoubleCliked=true;
handler.postDelayed(r,500);
}
}
}
回答3:
You may use onDoubleTapListener
.
This link may hep you.
回答4:
The easiest way is to use long variable instead handler
private var doubleClickLastTime = 0L
view.setOnClickListener {
if(System.currentTimeMillis() - doubleClickLastTime < 300){
doubleClickLastTime = 0
doAction()
}else{
doubleClickLastTime = System.currentTimeMillis()
}
}
回答5:
Maaalte's answer helped me to write this code.
declare doubleClick variable globally
boolean doubleClick = false;
Logic to handle double click
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Runnable r = new Runnable() {
@Override
public void run() {
doubleClick = false;
}
};
if (doubleClick) {
//your logic for double click action
doubleClick = false;
}else {
doubleClick=true;
handler.postDelayed(r, 500);
}
}
});
来源:https://stackoverflow.com/questions/5191456/how-can-i-place-double-click-event-on-imageview-in-android