Android графика рисует на холсте вопрос - PullRequest
0 голосов
/ 28 марта 2011

Я пишу свое первое приложение для Android. Так что я все еще на этапе обучения.

Это очень просто, я рисую графику в onDraw () в центре экрана, и с помощью события onTouch придется перемещать графику в точку, к которой прикоснулся пользователь. Для этого событие onTouch запустит поток и обновит изображение. Проблема в том, что canvas.draw () работает при вызове из onDraw (), но не обновляет canvas / screen при вызове из потока.

Моя функция drawSplash (Canvas c, Location l);

Я вызываю одну и ту же функцию как в onDraw (), так и в потоке.

Единственное отличие в коде, которое я вижу, заключается в том, что я храню переданный мне объект Canvas в функции onDraw () в переменной моего класса, чтобы я мог снова использовать его в потоке. Это почему-то кажется неправильным. Если да, то как правильно это сделать? Могу ли я получить объект Canvas в любое время, когда захочу? Как мне это сделать?

  • P

Ответы [ 3 ]

1 голос
/ 28 марта 2011

Здесь немного другой подход.

Создайте несколько глобальных полей, таких как:

    private int mX;  
    private int mY;

И затем, в вашем методе onTouch() (вы используете onTouch того же класса View, верно?) Вы меняете эти поля и затем вызываете метод invalidate():

    public boolean onTouch (View v, MotionEvent event) {
        mX = event.getX();
        mY = event.getY();
        invalidate();
    }

Итак, метод onDraw() просто перетянет ваш всплеск в положение (mX, mY).

1 голос
/ 28 марта 2011

Вы должны .invalidate () ваш взгляд переопределил метод onDraw.Каждый раз, когда он вызывается, он должен рисовать графику в правильном положении.

И вы должны вызывать метод .invalidate () внутри основного потока.

0 голосов
/ 28 марта 2011

В моем понимании вы можете установить базовую плату в качестве фонового изображения.

Если вы делаете это, вам не нужно постоянно перерисовывать ее, но я не уверен на 100% в этом.

Взгляните на код Lunar Lander на устройстве Android Dev здесь:

http://developer.android.com/resources/samples/LunarLander/index.html

Phil

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