开发适用于任何屏幕尺寸的图形应用程序需要一些思考 通常我会创建高分辨率图形和比例以适应屏幕。
我看过建议避免使用“真实像素” 我尝试使用密度和dp但是使用我使用的解决方案似乎更复杂 并且无法找到更好的方法来扩展我的图形,然后使用设备屏幕(真实像素)
我创建了这个类来缩放我的图像(基于真实像素) 这解决了我的大多数问题(仍有一些设备有不同的宽高比) 似乎工作正常。
public class BitmapHelper {
// Scale and keep aspect ratio
static public Bitmap scaleToFitWidth(Bitmap b, int width) {
float factor = width / (float) b.getWidth();
return Bitmap.createScaledBitmap(b, width, (int) (b.getHeight() * factor), false);
}
// Scale and keep aspect ratio
static public Bitmap scaleToFitHeight(Bitmap b, int height) {
float factor = height / (float) b.getHeight();
return Bitmap.createScaledBitmap(b, (int) (b.getWidth() * factor), height, false);
}
// Scale and keep aspect ratio
static public 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), false);
}
// Scale and dont keep aspect ratio
static public 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), false);
}
}
我的问题是:
感谢您的建议
[编辑] 我忘了提到我通常将SurfaceView用于我的应用程序(如果它有任何区别)
答案 0 :(得分:0)