ที่จริงถ้าคุณต้องการให้dpi แสดงผลที่แท้จริงคำตอบนั้นอยู่ในระหว่างถ้าคุณค้นหาสำหรับตัวชี้วัดการแสดงผล:
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int dpiClassification = dm.densityDpi;
float xDpi = dm.xdpi;
float yDpi = dm.ydpi;
densityDpi * 160 จะให้ค่า / ข้อเสนอแนะที่คุณควรใช้กับความหนาแน่น
0.75 - ldpi - 120 dpi
1.0 - mdpi - 160 dpi
1.5 - hdpi - 240 dpi
2.0 - xhdpi - 320 dpi
3.0 - xxhdpi - 480 dpi
4.0 - xxxhdpi - 640 dpi
ตามที่ระบุในโพสต์ก่อนหน้า
แต่dm.xdpi
จะไม่ให้ค่าdpi ที่แท้จริงของการแสดงผลเสมอ: ตัวอย่าง:
Device: Sony ericsson xperia mini pro (SK17i)
Density: 1.0 (e.g. suggests you use 160dpi resources)
xdpi: 193.5238
Real device ppi is arround 193ppi
Device: samsung GT-I8160 (Samsung ace 2)
Density 1.5 (e.g. suggests you use 240dpi resources)
xdpi 160.42105
Real device ppi is arround 246ppi
ดังนั้น dpi ที่แท้จริงของหน้าจอควรเป็น Density * xdpi .. แต่ฉันไม่แน่ใจว่านี่เป็นวิธีที่ถูกต้องหรือไม่!
getDisplayMetrics().xdpi
ซึ่งควรจะคืนค่า dpi จริงของอุปกรณ์ โปรดทราบว่าผู้ผลิตตั้งค่านี้ไม่ถูกต้องในอุปกรณ์อย่างสม่ำเสมอดังนั้นคุณจึงไม่สามารถใช้งานได้ เศร้า แต่จริง: ข้อมูลเกี่ยวกับ dpi จริงไม่สามารถใช้ได้ ที่มา: groups.google.com/d/msg/android-developers/g56jV0Hora0/…