Android MapView,找到地图的中心,通过投掷动作确定动画的结束
我能找到的与此相关的最接近的东西是:Android MapView,找到地图的中心,通过投掷动作确定动画的结束,android,Android,我能找到的与此相关的最接近的东西是: 我想在用户“甩”地图后,确定地图中心的最终“休息点”。当用户抬起手指时,我正在拦截触摸事件,但当地图以滑动动作甩动时,这不起作用,因为地图在该点继续移动。贴图动画完成后是否可以实现回调?我查看了MapView、Overlay、MapController等类的文档,但没有看到任何有帮助的内容。我还一直在寻找一种“Dod end drag”解决方案,它可以在地图移动结束后的瞬间检测地图中心。我还没有找到它,所以我做了这个简单的实现,效果很好: private
我想在用户“甩”地图后,确定地图中心的最终“休息点”。当用户抬起手指时,我正在拦截触摸事件,但当地图以滑动动作甩动时,这不起作用,因为地图在该点继续移动。贴图动画完成后是否可以实现回调?我查看了MapView、Overlay、MapController等类的文档,但没有看到任何有帮助的内容。我还一直在寻找一种“Dod end drag”解决方案,它可以在地图移动结束后的瞬间检测地图中心。我还没有找到它,所以我做了这个简单的实现,效果很好:
private class MyMapView extends MapView {
private GeoPoint lastMapCenter;
private boolean isTouchEnded;
private boolean isFirstComputeScroll;
public MyMapView(Context context, String apiKey) {
super(context, apiKey);
this.lastMapCenter = new GeoPoint(0, 0);
this.isTouchEnded = false;
this.isFirstComputeScroll = true;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN)
this.isTouchEnded = false;
else if (event.getAction() == MotionEvent.ACTION_UP)
this.isTouchEnded = true;
else if (event.getAction() == MotionEvent.ACTION_MOVE)
this.isFirstComputeScroll = true;
return super.onTouchEvent(event);
}
@Override
public void computeScroll() {
super.computeScroll();
if (this.isTouchEnded &&
this.lastMapCenter.equals(this.getMapCenter()) &&
this.isFirstComputeScroll) {
// here you use this.getMapCenter() (e.g. call onEndDrag method)
this.isFirstComputeScroll = false;
}
else
this.lastMapCenter = this.getMapCenter();
}
}
就这样,我希望这会有帮助!o/如何将其与layout.xml一起使用?我一直在犯这个错误