Hej hej,
Har i en av mina applikationer en funktion för att sätta en valfri bitmap som wallpaper. För att göra detta behöver jag skala om bitmap-filen så att den passar bakgrunden. Jag försöker först ställa in höjden och skalar därefter om utifall bredden är för liten.
Allt ser bra ut när jag debuggar så till vida att height och width blir korrekt för den nya bitmapen. Men när jag sätter den som wallpaper och går ut och tittar på hemskärmen är den omskalad och stämmer alls inte med mina värden.
Någon som har en idé kring detta?
Kod:
final WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
try {
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int screenWidth = dm.widthPixels;
int screenHeight = dm.heightPixels;
int width = bitmap.getWidth();
int height = bitmap.getHeight();
float ratio = ((float)screenHeight) / height;
int newHeight = screenHeight;
int newWidth = Math.round(ratio * width);
if(newWidth < screenWidth){
newWidth = screenWidth;
newHeight = Math.round(screenWidth / ratio * height);
}
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true);
resizedBitmap.getHeight();
resizedBitmap.getWidth();
wallpaperManager.setBitmap(resizedBitmap);
} catch( Exception e ) {
e.printStackTrace();
}
Höjd och bredd stämmer alltså precis med värden jag vill ha:
resizedBitmap.getHeight();
resizedBitmap.getWidth();
Men det blir ändå fel när bakgrunden är satt.