метод draw (Canvas canvas), выполняемый дважды в приложении - PullRequest
3 голосов
/ 11 января 2012

Сначала посмотрите на мой код.

Вот мой код: -

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) 

Каждый раз, когда я запускаю свое приложение, draw (Canvas canvas) запускается дважды. Я не хочу, чтобы оно запускалось дважды каждый раз. Помогите мне избавиться от этой проблемы. Любая помощь будет высоко оценена.

1 Ответ

1 голос
/ 11 января 2012

Когда вы переопределяете любой метод, лучше сначала вызвать

 super.overridedMethod();

, затем код вашей реализации.

Попробуйте,

 super.draw();
 //NOW YOUR STUFF

или удалите super.draw();

Обновление

Вы лучше переопределите onDraw() метод, чем draw().

Снова обновите

Убедитесь, что setContentView(new GameView(this)); вызывается в onCreate(),

Надеюсь, это поможет вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...