编辑我对android没有经验;这是我的第一个申请!
我试图在屏幕上绘制一个精灵并在屏幕上移动它。 当我按下主页按钮然后返回应用程序时,绘图停止并按预期继续,但是当我按下电源按钮或锁定按钮时,绘图过程完全停止。有人可以给我一些关于如何处理这个的澄清吗?感谢。
这是代码:
package com.MB2Assignment.assignment;
import android.app.Activity;
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.graphics.Typeface;
import android.graphics.Paint.Align;
import android.os.Bundle;
import android.view.View;
public class Graphics extends Activity{
boolean drawEnabled = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//myView = new CustomView(this);
setContentView(new FallingMan(this));
}
public class FallingMan extends View {
Bitmap charStand;
float changingY;
Typeface font;
Paint textPaint = new Paint();
Rect middleRect = new Rect();
Paint colorBlue = new Paint();
public FallingMan(Context context) {
super(context);
// TODO Auto-generated constructor stub
charStand = BitmapFactory.decodeResource(getResources(), R.drawable.charstand);
changingY = 0;
font = Typeface.createFromAsset(context.getAssets(), "font.tff");
//drawEnabled = true;
}
@Override
public void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
canvas.drawColor(Color.WHITE);
textPaint.setARGB(50, 0, 0, 0);
textPaint.setTextAlign(Align.CENTER);
textPaint.setTextSize(50);
textPaint.setTypeface(font);
canvas.drawText("Behold, The Falling Man", canvas.getWidth()/2, 200, textPaint);
canvas.drawBitmap(charStand, canvas.getWidth()/2, changingY, null);
if(drawEnabled == true)
{
if (changingY < canvas.getHeight()) changingY += 10;
else changingY = 0;
middleRect.set(0,400,canvas.getWidth(),550);
colorBlue.setColor(Color.BLUE);
canvas.drawRect(middleRect, colorBlue);
invalidate();
}
}
}
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
drawEnabled = false;
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
drawEnabled = false;
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
drawEnabled = true;
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
drawEnabled = false;
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
}
}
答案 0 :(得分:0)
错误是&#39; invalidate();&#39;在错误的一对括号内。它必须在&#39; onDraw()&#39;范围。