Android 在应用程序中运行两次的draw(Canvas)方法
首先看看我的代码 这是我的密码:-Android 在应用程序中运行两次的draw(Canvas)方法,android,android-canvas,android-view,Android,Android Canvas,Android View,首先看看我的代码 这是我的密码:- public GameView(Context context){ super(context); Display display = ((WindowManager)context.getSystemService( Context.WINDOW_SERVICE)).getDefaultDisplay(); } @Override public void draw(Canvas canvas) { //
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)
运行了两次。
以下是我每次在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)
每次我运行应用程序时,draw(Canvas Canvas)都会运行两次。我不希望每次都运行两次。请帮助我解决此问题。任何帮助都将不胜感激 重写任何方法时,最好调用
super.overridedMethod();
首先,编写实现代码
试试看
或删除super.draw()代码>
更新
您最好重写onDraw()
方法,而不是draw()
再次更新
确保setContentView(新游戏视图(此))在onCreate()
中调用code>
希望这能对你有所帮助没有朋友对我的情况没有帮助,我每次运行应用程序时,still draw(Canvas Canvas)都会运行两次。我刚刚创建了一个主活动,并在setContentView()中传递了GameView构造函数(例如setContentView(new GameView(this));我已经粘贴了我放在GameView中的代码。我尝试了你的代码,但是我的工作只有一次。。是onCreate()还是其他方法???你只运行了一次还是多次代码。因为我不是第一次运行这个问题,但在那之后每次我都会得到双值。这里pablo也问了同样的问题,但没有人回答他。
super.draw();
//NOW YOUR STUFF