首先查看我的代码。
这是我的代码: -
public GameView(Context context){
super(context);
Display display = ((WindowManager)context.getSystemService(
Context.WINDOW_SERVICE)).getDefaultDisplay();
}
@Override
public void draw(Canvas canvas) {
// TODO Auto-generated method stub
int x = 0;
int y = 0;
bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
int imageWidth = bmp.getWidth();
int imageHeight = bmp.getHeight();
int width = display.getWidth();
System.out.println("Width = " +width);
int height = display.getHeight();
System.out.println("Height = " +height);
Random randomX,randomY;
randomX = new Random();
randomY = new Random();
x = randomX.nextInt(width - imageWidth);
System.out.println("X = " +x);
y = randomY.nextInt(height - imageHeight);
System.out.println("Y = " +y);
Rect dst = new Rect(x , y , x + imageWidth , y + imageHeight);
canvas.drawBitmap(bmp, null , dst , null);
System.out.println("dst = " +dst);
super.draw(canvas);
}
我的代码运行正常,但我的问题是draw(Canvas canvas)
运行了两次。
这是我每次使用不同的值在Logcat中获取它们的日志: -
Width=480
Height=800
X=247
Y=456
dst = Rect(247 , 456 - 319 , 528)
Width=480
Height=800
X=119
Y=560
dst = Rect(119 , 560 - 191 , 632)
每当我运行我的应用程序时,绘制(Canvas画布)都会运行两次。我不希望它每次都运行两次。帮助我摆脱这个问题。任何帮助都将受到高度赞赏。
答案 0 :(得分:1)
当您覆盖任何方法时,最好调用
super.overridedMethod();
首先,然后编写您的实现代码。
尝试,
super.draw();
//NOW YOUR STUFF
或删除super.draw();
您最好覆盖onDraw()
方法,而不是draw()
。
确保在setContentView(new GameView(this));
中调用onCreate()
。
希望这可以帮到你