我想调整图片大小(原始大小为1080p)但是他们没有正确调整大小,我也不知道为什么。有时,图像的尺寸不合适。在我的模拟器和我的旧800 * 480智能手机上工作正常但在我的nexus 4上有1280 * 768的东西看起来不对。读取正确的屏幕分辨率没有问题。我的调整大小程序只有一个错误。请帮我。 Heres a Snippet:
private Bitmap bitmap,bitmap1;
private float factor;
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics displaymetrics = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(displaymetrics);
width = displaymetrics.widthPixels;
height = displaymetrics.heightPixels;
factor = (float)height/1080;
Int bitmapheight,bitmapwidth;
bitmap = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.picture),(int)(factor*BitmapFactory.decodeResource(getResources(), R.drawable.picture).getwidth() ,(int)(factor*BitmapFactory.decodeResource(getResources(), R.drawable.picture).getHeight(), true);
canvas.drawBitmap(bitmap,.....
最后我的nexus的高度未调整为768/1080 * bitmapheight,我不知道为什么。注意其他一切都有效。 Mathmatics表示每部手机的高度应该相同。
这些是我的程序截图,显示图像高度不同
第一张图片:
第二
如您所见,图像在高度方面不相同。在我的模拟器和我的旧智能手机上,他们看起来正确。图像不应触及底部,但在我的nexus 4上它们会触及底部。
答案 0 :(得分:0)
对于任何有兴趣的人,为什么它不起作用。最后我发现了。
现在
BitmapFactory.decodeResource(getResources(), R.drawable.picture)
不仅可以加载图片,还可以根据您的分辨率进行缩放(不仅仅是在某些分辨率上),这就是为什么它让我感到困惑。我以为它只是加载该死的图片。现在该如何解决这个问题:
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inScaled = false;
BitmapFactory.decodeResource(getResources(), R.drawable.picture,opts)