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