停止/暂停迭代器 [英] Stop / Pause an Iterator
本文介绍了停止/暂停迭代器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试在Google Map上实现Markers的动画.我遇到的问题是正在启动某个动画,而针对特定标记的另一个动画仍在发生.
I am trying to implement an animation of Markers on a Google Map. The issue I am running into is an Animation being started while another Animation is still happening for a specific Marker.
有没有一种方法可以停止循环的迭代,并且仅在出现以下情况时才继续 符合特定条件?
Is there a way to stop the iteration of a loop, and continue only when a certain criteria is met?
获取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();
}
}
}
}
});
}
推荐答案
创建全局静态布尔值
public static boolean criteriaMet=false;
符合条件后,将其设置为true
.仅当标志为true时,才继续循环的迭代.
After your criteria is met set it to true
. Continue the iteration of the loop only if the flag is true.
这篇关于停止/暂停迭代器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文