Java 为什么这个位图没有在屏幕上显示动画?安卓应用程序
我试着让一个简单的球在屏幕上移动。我将球作为位图,并为x和y值设置字符串。我有一个小代码说,如果x小于宽度加10,直到它更大,然后重置为0。y也一样。但球根本不会在屏幕上移动 为什么我的球不动Java 为什么这个位图没有在屏幕上显示动画?安卓应用程序,java,android,graphics,bitmap,Java,Android,Graphics,Bitmap,我试着让一个简单的球在屏幕上移动。我将球作为位图,并为x和y值设置字符串。我有一个小代码说,如果x小于宽度加10,直到它更大,然后重置为0。y也一样。但球根本不会在屏幕上移动 为什么我的球不动 `package com.example.spader.gamer; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android
`package com.example.spader.gamer;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.view.View;
/**
* Created by Spader on 2/10/2016.
*/
public class drawingTheBall extends View {
Bitmap bBall;
int x, y;
public drawingTheBall(Context context) {
super(context);
bBall = BitmapFactory.decodeResource(getResources(), R.drawable.bball);
x = 0;
y = 0;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Rect ourRect = new Rect();
ourRect.set(0, 0, canvas.getWidth(), canvas.getHeight() / 2);
Paint blue = new Paint();
blue.setColor(Color.BLUE);
blue.setStyle(Paint.Style.FILL);
canvas.drawRect(ourRect, blue);
if (x < canvas.getWidth()){
x += 10;
}else{
x = 0;
}
if (y < canvas.getHeight()){
y += 10;
}else{
y = 0;
}
Paint p = new Paint();
canvas.drawBitmap(bBall, x, y, p);
invalidate();
}
}
`
`package com.example.spader.gamer;
导入android.content.Context;
导入android.graphics.Bitmap;
导入android.graphics.BitmapFactory;
导入android.graphics.Canvas;
导入android.graphics.Color;
导入android.graphics.Paint;
导入android.graphics.Rect;
导入android.view.view;
/**
*斯派德于2016年2月10日创建。
*/
公共类绘图球扩展视图{
位图bBall;
int x,y;
公共绘图球(上下文){
超级(上下文);
bBall=BitmapFactory.decodeResource(getResources(),R.drawable.bBall);
x=0;
y=0;
}
@凌驾
受保护的void onDraw(画布){
super.onDraw(帆布);
Rect ourRect=新Rect();
ourRect.set(0,0,canvas.getWidth(),canvas.getHeight()/2);
蓝色油漆=新油漆();
blue.setColor(Color.blue);
蓝色。设置样式(油漆。样式。填充);
canvas.drawRect(ourRect,蓝色);
if(x
您的球不会移动,因为draw()方法的唯一职责是使用给定的画布使视图显示它应该显示的内容。Android将在准备好显示视图内容时调用draw(),并且只有在那时。这通常发生在视图层次结构通过布局过程或某些内容使视图无效之后。Android不会在循环中调用draw
如果您需要动画,那么该逻辑应该由可能存在于活动中的代码或其他某种控制器类型的对象来管理,以确保最终在需要动画时调用draw。您也可以使用执行整个视图的基本动画,但看起来您希望视图能够处理其自身的所有项目定位和渲染。谢谢您的回复。我对编程有点陌生,所以你能帮我理解你的回答吗?如何使ondraw方法在位图中反复出现,从而重新定位图像?好吧,如果您对总体编程还不熟悉,我建议您遵循初学者教程,以熟悉Java和Android。您试图做的事情需要对这两者都有一些现有的了解,这超出了StackOverflow问题的范围。