android或ios现在都没有双击事件,但是android的api有双击的接口,但是必须加入OnGestureListener类里的所有方法,非常麻烦。
OnGestureListener方法我也试过,也不知道为什么根本没用。而且对于网上各种
所以最后用了一个计算时间的方法。
首先我自己的工程本身就监听放大缩小功能,所以本身就有
public class MainActivity extends Activity {
private ImageView = img;
public Handler doubleTapHandler = null;
protected long lastDown = -1;
public final static long DOUBLE_TIME = 500;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);// 去掉标题栏
setContentView(R.layout.main_activity);
img.setOnTouchListener(new TounchListener());
new Thread() {
@Override
public void run() {
sendMessage(DOWNLOAD_OK);
downloadPicture();
super.run();
}
}.start();
}
接着就是监听setOnTouchListener。
private class TounchListener implements OnTouchListener {
public boolean onTouch(View v, MotionEvent event) {
ImageView iv = (ImageView) v;
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
this.handleEvent(event);
break;
}
return true;
}
protected void handleEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
long nowDown = System.currentTimeMillis();
if (nowDown - lastDown < DOUBLE_TIME) { // 计算时间差
if (doubleTapHandler != null)
{
doubleTapHandler.sendEmptyMessage(-1);
}
img.setScaleType(ScaleType.FIT_CENTER); //在这里运行
Log.v("press","2");
} else {
lastDown = nowDown;
Log.v("press","3");
}
break;
case MotionEvent.ACTION_UP:
Log.v("press", String.valueOf(MotionEvent.ACTION_UP));
break;
}
}
}
当然两个函数可以整合,但是我的工程有多个手势,为了更好看就分成两个函数。