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..
Asked
Active
Viewed 1.7k times
5 Answers
5
whenever the onClick() is called the new instance of Handler is created, if the Handler object is instantiated inside onClick(). So, instantiate handler outside onClick().
boolean isDoubleClicked=false;
Handler handler=new Handler();
Runnable r=new Runnable(){
@Override
public void run(){
//Actions when Single Clicked
isDoubleClicked=false;
}
}
tv.setOnClickListener(new onClickListener){
@Override
public void onClick(View view){
if(isDoubleClicked){
//Actions when double Clicked
isDoubleClicked=false;
//remove callbacks for Handlers
handler.removeCallbacks(r);
}else{
isDoubleClicked=true;
handler.postDelayed(r,500);
}
}
}

Ashique Bava
- 2,486
- 2
- 9
- 21

Shamivul ruvaid
- 71
- 1
- 3
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()
}
}

Dmitriy Puchkov
- 1,530
- 17
- 41
-
Works best for kotlin based project. Can be used with databinding also.. – Willey Hute Dec 17 '21 at 13:46
-
One of the cool ways to create double click without a handler or thread. Supports almost all versions. – M DEV Dec 22 '22 at 11:26
3
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);
}
}
});

Darshn
- 1,512
- 1
- 23
- 31