изменить размер растрового изображения с изображением, использовать его в качестве фона

пытаюсь сделать игру для андроид.

теперь мне нужно поместить изображение в растровое изображение и изменить его размер, чтобы он соответствовал ширине и высоте устройства.

Когда я пытаюсь сделать это, я вижу картинку, которая больше, чем экран. Я хочу, чтобы растровое изображение вписывалось в экран.

Спасибо за вашу помощь.

вот часть моего кода:

класс GameView

bmp = BitmapFactory.decodeResource(getResources(), R.drawable.foto);
background = new BackGround(this,bmp);

Фон класса

public class BackGround {

       private Bitmap bmp;
       private int width;
       private int height;

       public BackGround(GameView gameView, Bitmap bmp) {
             this.bmp = bmp;
             this.width = bmp.getWidth();
             this.height = bmp.getHeight();
       }
         public void onDraw(Canvas canvas) {

             Rect src = new Rect(0, 0, width, height);
             Rect dst = new Rect(0, 0, width, height);
             canvas.drawBitmap(bmp, src, dst, null);
       }
}

person kmartinho    schedule 13.09.2011    source источник


Ответы (2)


Я просто добавил этот код в свой onDraw для динамического изменения размера в зависимости от экрана (для обработки портретного и ландшафтного режимов).

final int canvasWidth = getWidth();
final int canvasHeight = getHeight();

int imageWidth = originalImage.getWidth();
int imageHeight = originalImage.getHeight();

float scaleFactor = Math.min( (float)canvasWidth / imageWidth, 
                              (float)canvasHeight / imageHeight );
Bitmap scaled = Bitmap.createScaledBitmap(  originalImage, 
                                            (int)(scaleFactor * imageWidth), 
                                            (int)(scaleFactor * imageHeight), 
                                            true );
person ProjectJourneyman    schedule 13.09.2011
comment
Ха, хорошее замечание. Я считаю, что у меня был охранник, чтобы каждый раз не происходило масштабирование, но с тех пор я переместил код масштабирования в гораздо более подходящее место - surfaceCreated () (и еще один, когда изображение обновляется). Это чище и эффективнее. - person ProjectJourneyman; 26.12.2013

Rect dst = new Rect (0, 0, canvas.getWidth (), canvas.getHeight ());

person ibrahim    schedule 16.05.2013