我有位图,需要在运行时调整其大小。并且必须调整其大小,以便在任何屏幕上都可以容纳相同的屏幕空间。我试图像这样使用dp:
private int dpiToPx(int dp) {
//return (int)(getResources().getDisplayMetrics().densityDpi * dp / 160f);
return (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, getResources().getDisplayMetrics());
}
并缩放位图:
Bitmap b2 = Bitmap.createScaledBitmap (
b1,
dpiToPx(225),
dpiToPx(225),
true
);
稍后,我将使用canvas.drawBitmap();
我一直在想,它将在任何屏幕上产生相同大小的位图。但是在320dpi屏幕和720 dpi屏幕上进行测试会产生很大的差异。
我该如何解决?
答案 0 :(得分:0)
使用sdp库可能会对您有所帮助。 https://github.com/intuit/sdp
Bitmap b2 = Bitmap.createScaledBitmap ( b1,
dpiToPx(getContext().getResources().getDimensionPixelSize(R.dimen._225sdp)),
dpiToPx(getContext().getResources().getDimensionPixelSize(R.dimen._225sdp)), true );
答案 1 :(得分:0)
您可以使用它来确定设备的高度和宽度,并在.createScaledBitmap中使用它
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
float dpHeight = displayMetrics.heightPixels / displayMetrics.density;
float dpWidth = displayMetrics.widthPixels / displayMetrics.density;