我目前正在尝试使用条形图根据值的变化来上下移动条形图。
我使用一个单独的线程来处理绘图,刷新率为20ms,并使用postInvalidate()重绘我的视图。
我遇到的问题是,在postInvalidate之后,onDraw并不总是立即被调用,因此动画不是很流畅。
我尝试在每个onDraw()中使用固定增加的barsize,也尝试使用动态的增加,这些方法都不会产生非常平滑的动画,如果调用onDraw()花费太长时间会导致“滞后”。
此外,我也尝试使用SurfaceView而不是View也没有太大的成功。
无论如何都要创建一个平滑动画这个方法吗?或者我应该采取不同的方式?
答案 0 :(得分:0)
通常我们不使用额外的线程来处理动画步骤。坚持动画框架提供的现有设施。
以下是平滑缩放动画的示例:
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);
}
}