将视图从一个GroPoint移动到另一个

时间:2012-11-21 12:29:18

标签: android animation view android-mapview

我的MapView包含addView()添加的子视图和LayoutParams:

new MapView.LayoutParams(MapView.LayoutParams.WRAP_CONTENT, MapView.LayoutParams.WRAP_CONTENT, geoPoint, 0, 0, MapView.LayoutParams.BOTTOM | MapView.LayoutParams.LEFT)

我可以获得我的观点的屏幕点:

Point p1 = mapView.getProjection().toPixels(geoPoint, null);

当geoPoint更改时,我删除了mapView的所有子项,然后使用新的LayoutParams(基于新的geoPoint)添加我的视图,并获得新的屏幕点:

Point p2 = mapView.getProjection().toPixels(newGeoPoint, null);

现在我需要将视图从p1转换为p2,我尝试:

Animation animation = new TranslateAnimation(
                Animation.ABSOLUTE, p1.x, 
                Animation.ABSOLUTE, p2.x, 
                Animation.ABSOLUTE, p1.y, 
                Animation.ABSOLUTE, p2.y);
animation.setDuration(1500);
myView.startAnimation(animation);

动画播放但从错误的点到错误点。

如何从p1到p2制作正确的翻译动画。

1 个答案:

答案 0 :(得分:1)

试试这个:

Animation animation = new TranslateAnimation(0, p1.x - p2.x, 0, p1.y - p2.y);
animation.setDuration(1500);
myView.startAnimation(animation);

最后不要忘记设置你的点的新位置,否则当动画结束时它会转回到前位置。