0
林想知道是否有人可以幫助我的邏輯正確的關於我的程序這些原則。 我在其畫布上繪製出位圖的表面視圖。 我發現這塊代碼可以解決不同分辨率和屏幕密度下的位圖大小問題。像素,密度,屏幕分辨率 - 表面視圖上的位圖?
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
DisplayMetrics metrics = new DisplayMetrics();
display.getMetrics(metrics);
Point size = new Point();
display.getSize(size);
Log.e("XXX", "Display w/h: " +size.x + "/" + size.y);
bmp1 = BitmapFactory.decodeResource(getResources(), R.drawable.speedo);
int width = bmp1.getWidth();
int height = bmp1.getHeight();
Log.e("XXX", "w/h: " + width + "/" + height);
float scaleWidth = metrics.scaledDensity;
float scaleHeight = metrics.scaledDensity;
Log.e("XXX", "w/h: " + scaleWidth + "/" + scaleHeight);
// create a matrix for the manipulation
Matrix matrix = new Matrix();
// resize the bit map
matrix.postScale(scaleWidth, scaleHeight);
// recreate the new Bitmap
bmp2 = Bitmap.createBitmap(bmp1, 0, 0, width, height, matrix, true);
我在3個設備上記錄了我的值,在畫布上繪製出來之後。
- GenyMotion仿真器(598x360)[scale1.0]
- 了Lg Optimus2x(800×480)[scale1.5]
- OnePlus1(1980x1080)[scale3.0]
的圖像(位圖)我已(在Adobe)是由800像素179 @ 72像素/英寸
在GENYMOTION=它在267×60
出現在了Lg =它出現在400×90
在OnePlus1 =它出現在800 * 179
我得到的尺寸根據規模如何變化,但在1plus1雖然它說,在長度800,它比長屏幕即1980年!?怎麼可能? 有人可以解釋我究竟發生了什麼邏輯嗎?