ฉันมีรูปภาพบนอุปกรณ์สองเครื่องที่มีขนาดหน้าจอและความหนาแน่นต่างกัน
ฉันต้องการวาดวงกลมบนอุปกรณ์ A รูปภาพโดยใช้ผืนผ้าใบ จากนั้นส่งพิกัดกึ่งกลางไปยังอุปกรณ์ B และวาดวงกลมในตำแหน่งเดียวกัน แม้ว่ารูปภาพเดียวกันจะมีขนาดแตกต่างกันก็ตาม
สิ่งที่ฉันทำบนอุปกรณ์ A ก่อนที่จะส่งพิกัด x มีดังต่อไปนี้:
float density = getResources().getDisplayMetrics().density;
int width = getWidth();
float inchesLength = width/density;
float scaledXCenter = xCenter / inchesLength;
ฉันทำแบบเดียวกันกับพิกัด y
บนอุปกรณ์ B ฉันได้รับพารามิเตอร์เดียวกันและคูณพิกัดที่ได้รับเป็นนิ้วความยาว:
float density = getResources().getDisplayMetrics().density;
int width = getWidth();
float inchesLength = width/density;
float restoredXCenter = scaledXCenter * inchesLength;
ฉันกำลังทดสอบสิ่งนี้กับ AVD ปัญหาคือ AVD แต่ละตัวมีความหนาแน่นของหน้าจอเป็น 1 แม้ว่าฉันจะเห็นได้อย่างชัดเจนว่าบนอุปกรณ์ขนาดเล็ก (อุปกรณ์ A) ภาพเดียวกันก็แสดงได้เต็มที่ แต่ใช้พื้นที่น้อยกว่า!
แนวทางนี้ควรใช้งานได้เมื่อทำงานบนอุปกรณ์จริงหรือไม่
มีวิธีอื่นที่ดีกว่านี้หรือไม่?