我是 android 新手,我在理解如何为画布设置动画时遇到问题。基本上,当球应该从楼梯上掉下来时,我已经画了一个红球和一个楼梯
这是它的样子。

谁能帮助我我应该使用什么方法?如果你能给我提供一个非常有帮助的源代码。
这是我的源代码:
绘图视图.java
package com.ballandstair;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.view.View;
public class DrawingView extends View {
DrawingView(Context context) {
super(context);
}
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
Paint paint = new Paint();
Path path = new Path();
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.RED);
paint.setAntiAlias(true);
canvas.drawCircle(100, 50, 25, paint);
paint.setColor(Color.BLUE);
paint.setStyle(Paint.Style.FILL);
path.moveTo(75, 75);
path.lineTo(125, 75);
path.lineTo(125, 125);
path.lineTo(175, 125);
path.lineTo(175, 175);
path.lineTo(225, 175);
path.lineTo(225, 225);
path.lineTo(275, 225);
path.lineTo(275, 275);
path.lineTo(325, 275);
path.lineTo(325, 325);
path.lineTo(75, 325);
path.close();
canvas.drawPath(path, paint);
}
}
Run Code Online (Sandbox Code Playgroud)
主活动.java
package com.ballandstair;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DrawingView drawing = new DrawingView(this);
setContentView(drawing);
}
}
Run Code Online (Sandbox Code Playgroud)
您将需要(至少)做两件事:
第二步需要稍微小心。您可能会想编写一个循环来调用Thread.sleep(frameRate)(其中frameRate是帧之间的毫秒数)、更新球位置,然后调用invalidate()自定义视图来触发重绘。这样做的问题是您无法暂停事件线程。有(同样)两种处理此问题的方法:
invalidate()直接调用,但是可以调用postInvalidate()达到同样的效果。Runnable在其run()方法中更新球位置,调用invalidate(),然后要求视图Runnable在延迟后再次运行自身frameRate(通过调用postDelayed())。这两种方法都是合理的方法。您还需要逻辑来知道动画何时结束,并且您可能希望让用户控制动画何时开始或允许重播。
| 归档时间: |
|
| 查看次数: |
4374 次 |
| 最近记录: |