Android: How do I scale a bitmap to fit the screen size using canvas/draw bitmap?

前端 未结 3 1275
没有蜡笔的小新
没有蜡笔的小新 2021-01-21 13:15

I am taking an image and drawing it to the screen using canvas. I want to scale it based on the screen size.

This is what I tried, but it cuts off a large chunk of the

相关标签:
3条回答
  • 2021-01-21 13:38

    dont need creat scale bitmap, instead:

    Bitmap frameBuffer = Bitmap.createBitmap(frameBufferWidth,frameBufferHeight, Config.RGB_565);
    

    frameBufferWidth and frameBufferHeight are the sizes that you want to make your app base on those(for example 480*800)

    then simply add this code:

    Rect dstRect = new Rect();
    canvas.getClipBounds(dstRect); // get canvas size base screen size
    canvas.drawBitmap(framebuffer, null, dstRect, null);
    

    it draw your final bitmap according to screen size

    0 讨论(0)
  • 2021-01-21 13:43
        DisplayMetrics metrics = context.getResources().getDisplayMetrics();
        int width = metrics.widthPixels;
        int height = metrics.heightPixels;
    

    If you get your width and height like this, you aren't going to take the size of any toolbar/status bar/navigation bar into account.

    If you are coding an app that has a View, inflate a layout with an ImageView that is full size (i.e. match_parent), then use the scaleType to scale/fit/crop the image how you want.

    0 讨论(0)
  • 2021-01-21 13:57
    Rect frameToDraw = new Rect(0, 0, width, height);
    RectF whereToDraw = new RectF(0, 0, width, height);
    

    Take a look at the above code. Your are not scaling the picture. You are simply taking a part of the picture (in this case the whole picture) and pasting it somewhere (in this case the size of the original picture).

    The width and heigth of the frameToDraw rectangle should be the width and height of your picture.

    0 讨论(0)
提交回复
热议问题