我想创建尺寸与其所在屏幕尺寸相关的图像。基本上我有一个缩放位图50w * 50h
。我希望它在小型设备上50w * 50h
,在较大的设备上稍微大一点......等等,无论如何都要制作与其屏幕尺寸相关的缩放位图。我的目的是为不同的屏幕宽度制作一个dimen.xml
个不同dp
值的文件。但它似乎要求很高。有没有更简单的方法呢?我做了一些研究,但没有发现,有人可以帮忙吗?
答案 0 :(得分:0)
可能是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);
}
}
或this会对您有所帮助。