简体   繁体   中英

How to scale bitmaps based on device screen size in Android

I want to create images with sizes relevant to the size of the screen they are on. Basically I have a scaled bitmap 50w * 50h . I want it to be 50w * 50h on a small device, slightly larger on a larger device, etc... Is there anyway to make a scaled bitmap relevant to the screen size it's on. I have that of making a dimen.xml file with different dp values for different screen width's. But it seems so demanding. Is there any easier way to do it? I have done some research but found nothing, can anyone help?

May be this :

 public class BitmapScaler {
     // scale and keep aspect ratio
     public static Bitmap scaleToFitWidth(Bitmap b, int width) {
         float factor = width / (float) b.getWidth();
         return Bitmap.createScaledBitmap(b, width, (int) (b.getHeight() * factor), true);
     }


     // scale and keep aspect ratio
     public static Bitmap scaleToFitHeight(Bitmap b, int height) {
        float factor = height / (float) b.getHeight();
         return Bitmap.createScaledBitmap(b, (int) (b.getWidth() * factor), height, true);
     }


     // scale and keep aspect ratio
     public static Bitmap scaleToFill(Bitmap b, int width, int height) {
         float factorH = height / (float) b.getWidth();
         float factorW = width / (float) b.getWidth();
         float factorToUse = (factorH > factorW) ? factorW : factorH;
         return Bitmap.createScaledBitmap(b, (int) (b.getWidth() * factorToUse), 
         (int) (b.getHeight() * factorToUse), true);
      }


     // scale and don't keep aspect ratio
     public static Bitmap strechToFill(Bitmap b, int width, int height) {
         float factorH = height / (float) b.getHeight();
         float factorW = width / (float) b.getWidth();
         return Bitmap.createScaledBitmap(b, (int) (b.getWidth() * factorW), 
         (int) (b.getHeight() * factorH), true);
     }
 }

or this will help you.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM