我使用动画将TextView计数从0到某个值。 但是控件只刷新几帧,即如果要从0到100计数,我只看到动画从0到30,而LogCat继续显示详细输出。
final Interpolator easing = new AccelerateDecelerateInterpolator();
final TextView txtSaldo = (TextView) someView.findViewById(R.id.viewId);
Animation a = new Animation()
{
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
Log.v("----", "time: " + interpolatedTime + " : " + interpolatedTime*fidelityBalance);
txtSaldo.setText(String.format("%d",(int)(interpolatedTime*fidelityBalance)));
}
@Override
public boolean willChangeBounds() {
return false;
}
};
a.setDuration(5500);
a.setInterpolator(easing);
txtSaldo.startAnimation(a);
我已尝试使用txtSaldo.requestLayout()
或txtSaldo.invalidate()
,但没有运气。
有帮助吗?
感谢
答案 0 :(得分:1)
通过强制使用invalidate()到顶部主视图容器找到解决方案:
protected void applyTransformation(float interpolatedTime, Transformation t) {
Log.v("----", "time: " + interpolatedTime + " : " + interpolatedTime*fidelityBalance);
txtSaldo.setText(String.format("%d",(int)(interpolatedTime*fidelityBalance)));
// top container view
v.invalidate();
}
可能问题是由于视图中的其他并发动画完成而TextView仍处于计数状态。