如何解决动画onDraw部分
| 我有以下课程:public class MainActivity extends Activity {
/** Called when the activity is first created. */
String value = \"0\";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(new GaugeAnimation(this));
}
}
我的GuageAnimation类如下:
public class GaugeAnimation extends View{
private Path p;
private Paint cPaint = new Paint();
private int width = 200;
private int angleStart = 135;
private int sweep = 90;
private int value=0;
Bitmap bottom = BitmapFactory.decodeResource(getResources(),R.drawable.dashboard_rpm_bottom);
Bitmap top= BitmapFactory.decodeResource(getResources(),R.drawable.dashboard_rpm_active);
public GaugeAnimation(Context context){
super (context);
//Arc Equations & etc....
}
@Override
public void onDraw(Canvas c){
Paint paint = new Paint();
paint.setFilterBitmap(false);
paint.setColor(Color.BLUE);
c.translate(55,320);
//Draw bottom image on canvas
c.save();
p.addArc(new RectF(0,width,width),angleStart,sweep);
p.lineTo(width/2,width/2);
c.clipPath(p);
//draw Image on top
c.restore();
invalidate()
}
}
因此基本上可以根据圆弧方程式一次裁剪一张圆形图像。我想显示一个动画,就像所有圆圈都被填充一样(因此,请显示每个剪切的路径以演示正在构建的圆圈)。所以我想做一个for循环,如:
for (int i=0; i<100; i++) {
sweep=i;
p.addArc(new RectF(0,width/2);
c.clipPath(p);
invalidate();
}
但这不起作用,它只是在i = 100时得出最终结果,任何人都知道我该怎么做?
解决方法
当前,您的循环是在主线程上执行的,并使其保持繁忙,因此直到您完成操作,它才真正更新UI。
您应该在后台线程中执行循环(使用Timer或AsyncTask)并在主线程上执行绘制。请注意,如果没有短暂的睡眠,它可能看起来像动画太多了,将会非常快。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。