我是 android 的新手,我在理解如何为 Canvas 制作动画时遇到了问题。 基本上我画了一个红球和一个楼梯,当球应该从楼梯上掉下来的时候
这是它的样子。
谁能帮我看看我应该用什么方法?如果您能向我提供源代码,那将非常有帮助。
这是我的源代码:
DrawingView.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);
}
}
MainActivity.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);
}
}
最佳答案
基本上任何动画逻辑都由 3 个组件组成:
参数:您要绘制的对象的位置、旋转和比例;
线程:您可以选择使用 2 个线程分别绘制和更新对象属性(位置、旋转和缩放),也可以在一个线程中完成。
无限循环:无限循环绘制 -> 更新 -> 绘制 ...
实现方式有很多种,我只能推荐一些你可以使用的API:
View.invalidate() ,使用它来请求框架重绘您的 View ,因此您的 onDraw() 方法将被调用。
[View.postDelayed()](http://developer.android.com/reference/android/view/View.html#postDelayed(java.lang.Runnable, long)) ,用它来制作在 onDraw() 方法末尾无限循环调用 View.invalidate()。
关于java - 在android中使 Canvas 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11894578/