[英]Android: smooth animation with thread and invalidate()
我目前正在尝试制作条形图的动画,条形根据值的变化而上下移动。
我使用单独的线程以20ms的刷新率处理图形,并使用postInvalidate()重绘视图。
我遇到的问题是在postInvalidate之后,onDraw并不总是立即被调用,因此动画不是很平滑。
我尝试过在每个onDraw()中使用固定的barsize值,并且还是动态的,这两种方法都不能产生真正平滑的动画,并且如果调用onDraw()花费的时间太长,则会导致“滞后”。
另外,我也尝试使用SurfaceView代替View也不成功。
无论如何有这种方法来创建平滑的动画吗? 还是我应该诉诸不同?
通常,我们不使用其他线程来处理动画步骤。 只需坚持使用动画框架提供的现有功能即可。
这是平滑缩放动画的示例:
private static class ZoomAnimation extends Animation {
private float mFrom;
private float mTo;
private MyView mMyView;
public ZoomAnimation(MyView v, float from, float to) {
mFrom = from;
mTo = to;
mMyView = v;
setDuration(160);
}
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
float f = mFrom + ((mTo - mFrom) * interpolatedTime);
mMyView.setPerformZoom(f);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.