Android - Подгонка растрового изображения к экрану

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

public class ScopView extends View
{
    private Scop thescop;

    public ScopView(Context context, Scop newscop)
    {
        super(context);
        this.thescop = newscop;
    }

    @Override
    public void onDraw(Canvas canvas)
    {
        Bitmap scopeBitmap;
        BitmapFactory.Options bfOptions = new BitmapFactory.Options();
        bfOptions.inDither = false;
        bfOptions.inPurgeable = true;
        bfOptions.inInputShareable = true;
        bfOptions.inTempStorage = new byte[32 * 1024];

        scopeBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.scope, bfOptions);
        scopeBitmap.createScaledBitmap(scopeBitmap, SniperActivity.Width, SniperActivity.Height, false);
        canvas.drawBitmap(scopeBitmap, SniperActivity.scopx, SniperActivity.scopy, null);
    }
}

Хотя здесь используется метод createScaledBitmap, я использую себя в качестве источника и некоторые переменные из действия, используемого для получения высоты и ширины окна из настроек экрана.


person arielschon12    schedule 21.04.2012    source источник


Ответы (3)


Вы можете использовать приведенный ниже код для изменения размера растрового изображения.

int h = 320; // Height in pixels
int w = 480; // Width in pixels    
Bitmap scaled = Bitmap.createScaledBitmap(largeBitmap, h, w, true);
person Shankar Agarwal    schedule 21.04.2012

Кроме того, вы можете использовать приведенный ниже фрагмент кода.

public Bitmap getResizedBitmap(Bitmap bm, int newHeight, int newWidth) {
    int width = bm.getWidth();
    int height = bm.getHeight();
    float scaleWidth = ((float) newWidth) / width;
    float scaleHeight = ((float) newHeight) / height;

    // Create a matrix for the manipulation
    Matrix matrix = new Matrix();

    // Resize the bit map
    matrix.postScale(scaleWidth, scaleHeight);

    // Recreate the new Bitmap
    Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, false);

    return resizedBitmap;
}
person Shankar Agarwal    schedule 21.04.2012

Этот код поможет вам попробовать это

int REQ_WIDTH = 0;
int REQ_HEIGHT = 0;
REQ_WIDTH =imageView.getWidth();
vREQ_HEIGHT =imageView.getHeight();
mImageView.setImageBitmap(Bitmap.createScaledBitmap(BitmapFactory.decodeFile(imageURI, options), REQ_HEIGHT, REQ_WIDTH, true));
person Basheer    schedule 04.04.2013