Растровое изображение не работает - PullRequest
0 голосов
/ 01 марта 2012

У меня есть этот код, который должен переместить объект вниз, но он стоит на месте, может кто-то сказать, что не так ??

Первый код

Класс представления, в котором я отображаю код объекта.

import android.app.Activity;
import android.os.Bundle;

public class Game extends Activity {
    Play View;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        View = new Play(this);
        setContentView(View);   
    }
}

Код выхода

Это код, по которому объект должен двигаться.

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.view.View;


public class Play extends View  {

    int Y=0;
    Bitmap object;

    public Play(Context context) {
        super(context);
        // TODO Auto-generated constructor stub         object = BitmapFactory.decodeResource(getResources(), R.drawable.brid);
   }

    @Override
    protected void onDraw(Canvas canvas) {
        // TODO Auto-generated method stub
        super.onDraw(canvas);
        canvas.drawColor(Color.GRAY);
        canvas.drawBitmap(object, (canvas.getWidth()/2), Y, null);
        if (Y < canvas.getHeight()){
            Y +=10;
        }else {
            Y = 0;
        }
    }    

}

Ответы [ 2 ]

1 голос
/ 01 марта 2012

Прежде всего, не называйте ваш Play объект "View", так как это относится к классу Android.Назовите это как «playView» ...

Чтобы ответить на ваш вопрос, View не перерисовывается после завершения onDraw().Чтобы сделать это, вы должны вызвать invalidate() в конце onDraw().

Чтобы сделать рисунок гладким, я бы рекомендовал поместить это в Thread и сделать игровой цикл для запуска чертежа.Посмотрите на SurfaceView, так как это быстрее, чем рисовать прямо на Canvas из View.

0 голосов
/ 01 марта 2012

Я не уверен, что вы ожидаете, но View.onDraw () не будет автоматически вызываться для вас несколько раз, после того как ваше представление отрендерено, оно не будет вызваноснова, пока что-то не запрашивает перерисовку, обычно используя View.invalidate ()

Вы, вероятно, должны реализовать то, что вы хотите сделать, используя Animation .

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