您的位置:首页 > 移动开发 > Android开发

关于 android 中的MapView 双击事件的问题?

2010-07-03 17:45 507 查看
我在做的程序的时候,遇到这样的一个问题,就是,双击mapView响应事件,后来试了很多方法,后来终于成功了!

这是我从网上搜集的一些资料。如下:

touch与多个mapview 的属性及返回值的总结

序号

setClickable
setEnabled
onTouch函数
返回值
结果
1默认默认false仅响应第一次,mapview正常响应
2默认默认true每次都响应,mapview不能正常响应
3truetruefalse仅响应第一次,mapview正常响应
4truetruetrue每次都响应,mapview不能正常响应
根据以上调查结果得出结论

onTouch函数的返回值直接影响着onTouch函数响应情况,mapview和onTouch函数响应互斥,与setClickable setEnabled无关



决定使用dispatchTouchEvent函数,下面是我重写的dispatchTouch方法,主要功能是,双击mapView能自动放大地图。以供大家参考!

首先这个实例只能用在4.0以上版本

  你想点击任意一点获得坐标不能用onTouchEvent,而只能用dispatchTouchEvent 因为“MapActivity 继承了 the dispatchTouch Event 而不是OnTouchEvent ”

  @Override
public boolean dispatchTouchEvent(MotionEvent ev) {
int actionType=ev.getAction();
switch(actionType){
case MotionEvent.ACTION_DOWN:
count++;
if(count==1){
firClick=System.currentTimeMillis();
}else if(count==2){
//Toast.makeText(ActivityMain.this, "aaa", Toast.LENGTH_SHORT).show();
secClick=System.currentTimeMillis();
System.out.println("sec:"+secClick);
System.out.println("first:"+firClick);
distanceTime=secClick-firClick;
System.out.println("distanceTime:"+distanceTime);
if(distanceTime>1 && distanceTime<1000){
Toast.makeText(ActivityMain.this, "aaa", Toast.LENGTH_SHORT).show();
intZoomLevel++;
if (intZoomLevel > mMapView01.getMaxZoomLevel()) {
intZoomLevel = mMapView01.getMaxZoomLevel();
}
mMapController01.setZoom(intZoomLevel);
}
firClick=0;
secClick=0;
count=0;

}
}
return super.dispatchTouchEvent(ev);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: