如何在Android中的ImageView上放置双击事件

时间:2011-03-04 08:42:16

标签: android android-widget

我必须在图像视图上放置双击事件。每当我双击图像时,它应该是Zoom.But我发现在Image Veiw中没有像双击这样的事件。 谁能告诉我怎么做? 在此先感谢..

5 个答案:

答案 0 :(得分:10)

尝试这种方法:

  • 添加boolean doubleClick = false;
  • Handler doubleHandler
  • in onClick检查doubleClick is true
  • 如果是,则为双击
  • 如果没有,请将doubleClick设置为true并使用处理程序postDelayed将其设置为false,即500ms后

答案 1 :(得分:2)

每当调用onClick()时,如果Handler对象在onClick()中被实例化,则将创建Handler的新实例。 因此,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);
    }

  }

}

答案 2 :(得分:1)

您可以使用onDoubleTapListener

link可能会对您有所帮助。

答案 3 :(得分:0)

Maaalte的回答帮助我编写了这段代码。

全局声明doubleClick变量

getPermutationArray(<any number>)

处理双击的逻辑

   boolean  doubleClick = false;

答案 4 :(得分:0)

最简单的方法是使用 long 变量代替处理程序

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