resize image in android drawable

前端 未结 2 1888
北荒
北荒 2020-12-20 07:11

I have full resolution images in drawable folder need to resize according to phone screen size how to do that ?

相关标签:
2条回答
  • 2020-12-20 07:59

    Do it like this

    /************************ Calculations for Image Sizing *********************************/ 
    public Drawable ResizeImage (int imageID) { 
    //Get device dimensions 
    Display display = getWindowManager().getDefaultDisplay(); 
    double deviceWidth = display.getWidth(); 
    
    BitmapDrawable bd=(BitmapDrawable) this.getResources().getDrawable(imageID); 
    double imageHeight = bd.getBitmap().getHeight(); 
    double imageWidth = bd.getBitmap().getWidth(); 
    
    double ratio = deviceWidth / imageWidth; 
    int newImageHeight = (int) (imageHeight * ratio); 
    
    Bitmap bMap = BitmapFactory.decodeResource(getResources(), imageID); 
    Drawable drawable = new BitmapDrawable(this.getResources(),getResizedBitmap(bMap,newImageHeight,(int) deviceWidth)); 
    
    return drawable; 
    } 
    
    /************************ Resize Bitmap *********************************/ 
    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; 
    }
    
    0 讨论(0)
  • 2020-12-20 08:08

    to get the width you should do this :

    Display display = getWindowManager().getDefaultDisplay();
    double deviceWidth;
    if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB_MR1)
                deviceWidth= display.getWidth();
            else {
                display.getSize(size);
                deviceWidth=size.x;
            }
    
    0 讨论(0)
提交回复
热议问题