我正在尝试在Google地图上实施标记动画。我遇到的问题是正在启动动画,而另一个动画仍在针对特定标记发生。
是否有办法停止循环的迭代,并且仅在何时继续 符合某个标准?
获取LatLng - 开始动画 - 回调火力(完成动画) - 获取LatLng等等
public void animateMarker(final String key, final List<LatLng> latlngList) {
Log.e(TAG, "------------- MARKER " + key + "-------------");
Handler mHandler = new Handler();
mHandler.post(new Runnable() {
final AnimateCarObj animateCarObj = animateCarObjMap.get(key);
final Marker marker = markersHashMap.get(key);
Boolean isAnimationRunning = false;
@Override
public void run() {
final Iterator<LatLng> iterator = latlngList.iterator();
while (iterator.hasNext()) {
if (!(isAnimationRunning)) {
Log.e(TAG, "START -- " + key + ": " + iterator.next().toString());
try {
isAnimationRunning = true;
LatLngInterpolator latlonInter = new LinearFixed();
latlonInter.interpolate(1, marker.getPosition(), iterator.next());
MarkerAnimation.animateMarker(new RunningCallback() {
@Override
public void onFinish() {
Log.e(TAG, "FINISH -- " + key + ": " + iterator.next().toString());
isAnimationRunning = false;
}
}, latlngList.size(), marker, iterator.next(), latlonInter);
} catch (Exception e) {
Log.e(TAG, "EXCEPTION: " + e.getMessage());
e.printStackTrace();
}
}
}
}
});
}
答案 0 :(得分:0)
只需使用while循环来停止迭代器逻辑。
while (iterator.hasNext()) {
// wait
while (!someBooleanConditionToWaitFor) { }
// do your other stuff
// when you're done your other stuff, set it back to false.
someBooleanConditionToWaitFor = false;
}
动画完成后,将条件设置为true,以便继续。当您在该迭代结束时,将其设置为false,以便再次等待。
答案 1 :(得分:0)
创建一个全局静态布尔标志
public static boolean criteriaMet=false;
符合条件后,请将其设为true
。仅当标志为真时才继续循环迭代。