Как разместить событие двойного щелчка на ImageView в Android

Я должен разместить событие двойного щелчка на изображении. Когда бы я ни щелкнул дважды на изображении, это должно быть Zoom. Но я обнаружил, что в Image Veiw нет такого события, как двойной щелчок. Может ли кто-нибудь сказать мне, как это сделать?? Заранее спасибо..

3 ответа

Попробуйте этот подход:

  • добавлять boolean doubleClick = false;
  • а также Handler doubleHandler
  • в onClick проверьте, если doubleClick is true
  • если это правда, это двойной щелчок
  • если нет, установите doubleClick чтобы правда и использовать обработчики postDelayed чтобы установить его обратно в ложь через 500 мс

Всякий раз, когда вызывается onClick(), создается новый экземпляр Handler, если объект Handler установлен внутри onClick(). Итак, инсталлируйте обработчик вне 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);
    }

  }

}

Самый простой способ - использовать длинную переменную вместо обработчика

private var doubleClickLastTime = 0L
view.setOnClickListener {
        if(System.currentTimeMillis() - doubleClickLastTime < 300){
            doubleClickLastTime = 0
            doAction()
        }else{
            doubleClickLastTime = System.currentTimeMillis()
        }
    }

Ответ Маалте помог мне написать этот код.

объявить переменную doubleClick глобально

   boolean  doubleClick = false;

Логика для обработки двойного щелчка

 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);
                }

            }


        });

Вы можете использовать onDoubleTapListener,

Эта ссылка может помочь вам.

Другие вопросы по тегам