1

I'm current creating a game and i've made 3 main classes - GameView (which extends surfaceview), GameViewThread (which is a thread used for surfaceview) and a MainActivity. I want to enter a background image in SurfaceView, but have not been able to figure out how to do so.

Using setBackground() in the onDraw method of GameView doesn't work as well. I would greatly appreciate any help you guys can provide me with.

Here is my GameView class:

public class GameView extends SurfaceView implements SurfaceHolder.Callback {
    private Bitmap bmp1;
    private SurfaceHolder holder;
    private GameLoopThread gameLoopThread;
    private Sprite sprite;
    private float sensorX = 0;

    private Platform platform[] = new Platform[7];
    private Bonus GravUp[] = new Bonus[3];
    private Bonus GravDown[] = new Bonus[3];

    private Bitmap bmp2;
    private Bitmap bmp3;
    private boolean collision;
    private int a;
    private int b;
    private int c1;
    private double c2;
    int agility = 50;
    private Bitmap bmp4;

    public double getsensorX() {
        return sensorX;
    }

    public double setsensorX(float s) {
        return sensorX = s;
    }

    synchronized public int getSpriteY() {
        return sprite.y;
    }

    synchronized public int getSpriteX() {
        return sprite.x;
    }

    synchronized public int getSpriteHeight() {
        return sprite.height;
    }

    synchronized public int getSpriteWidth() {
        return sprite.width;
    }

    public GameView(Context context) {
        super(context);
        gameLoopThread = new GameLoopThread(this);
        holder = getHolder();
        holder.addCallback(this);
        bmp1 = BitmapFactory.decodeResource(getResources(), R.drawable.russel);
        sprite = new Sprite(this);
        sprite.getBMP(bmp1);
        bmp2 = BitmapFactory.decodeResource(getResources(), R.drawable.brick);
        bmp3 = BitmapFactory.decodeResource(getResources(), R.drawable.gravup);
        bmp4 = BitmapFactory.decodeResource(getResources(), R.drawable.gravdown);
        for (int i = 0; i < GravUp.length; i++) {
            GravUp[i] = new Bonus(this, bmp3);
        }
        for (int i = 0; i < GravDown.length; i++) {
            GravDown[i] = new Bonus(this, bmp4);
        }

        for (int i = 0; i < platform.length; i++) {
            Random r = new Random();
            platform[i] = new Platform(this, bmp2, 850 + 200 * i,
                    400 - r.nextInt(250));

        }

    }

    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {
        boolean retry = true;
        gameLoopThread.setRunning(false);
        while (retry) {
            try {
                gameLoopThread.join();
                retry = false;
            } catch (InterruptedException e) {
            }
        }
    }

    @Override
    public void surfaceCreated(SurfaceHolder holder) {
        gameLoopThread.setRunning(true);
        gameLoopThread.start();
    }

    @Override
    public void surfaceChanged(SurfaceHolder holder, int format, int width,
            int height) {
    }


    @Override
    protected void onDraw(Canvas canvas) {
        canvas.drawColor(Color.YELLOW);
        sprite.Draw(canvas);
        for (int i = 0; i < platform.length; i++) {
            platform[i].Draw(canvas);
        }
        for (int i = 0; i < GravUp.length; i++) {
            GravUp[i].Draw(canvas);
        }
        for (int i = 0; i < GravDown.length; i++) {
            GravDown[i].Draw(canvas);
        }
    }

My MainActivity Class:

public class MainActivity extends Activity {


    GameView gameView;
    FrameLayout game;
    RelativeLayout GameButtons;
    Button butOne;
    Button butTwo;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        gameView = new GameView(this);
        game = new FrameLayout(this);
        GameButtons = new RelativeLayout(this);     
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.MATCH_PARENT,
                RelativeLayout.LayoutParams.MATCH_PARENT);
        GameButtons.setLayoutParams(params);

        game.addView(gameView);
        game.addView(GameButtons);
        setContentView(game);
}
}

How can I use an image I have saved in res/drawable-hdpi folder as the background to my game? Should I use the command in GameView or MainActivity? Do let me know if you need more information in order to help me out! Thank you

Beryllium
  • 12,808
  • 10
  • 56
  • 86
  • check out this answer http://stackoverflow.com/questions/5981098/set-the-background-image-of-a-surfaceview – nio Aug 04 '13 at 10:42

0 Answers0