How can i place double click event on ImageView in Android

痴心易碎 提交于 2019-12-17 20:58:00

问题


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 handlers postDelayed 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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!