while (cursor.moveToNext()) {
words.setText(cursor.getString(1) + " : " + cursor.getString(2));
image.setLayoutParams(new ViewGroup.LayoutParams(words.getMeasuredHeight(),words.getMeasuredHeight()));
ll.addView(words);
ll.addView(image);
wm.addView(ll, parameters);
final ValueAnimator animator = ValueAnimator.ofFloat(0.0f, 1.0f);
animator.setRepeatCount(0); // Times of repeat
animator.setInterpolator(new LinearInterpolator());
animator.setDuration(4000); //Fast and Furious
// animator.setStartDelay(5000);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
final float progress = (float) animation.getAnimatedValue();
final float width = words.getWidth();
final float translationX = width * progress;
words.setTranslationX(translationX);
words.setTranslationX(width - translationX); //Right to Left
}
});
animator.start();
animator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
ll.removeView(words);
ll.removeView(image);
wm.removeView(ll);
}
}, 3000);
}
});
}
这是我的代码。我在线程中有问题(我想是这样)。正如你看到的。 cursor获取我数据库中的所有数据。在那之后,它通过while循环获得每一个。
循环开始时,animator.start()
以7s运行。但是while loop
早些时候完成了。因此,在下一个循环中,它不能addView()
,因为它不会删除removeView
。它看起来像这张图片:processing。所以,while loop
在运行新循环之前需要完成线程。
我是Java的新手,我不太了解线程。请帮我。谢谢。