Saya memiliki gambar di dua perangkat berbeda dengan ukuran dan kepadatan layar berbeda.
Dengan menggunakan kanvas, saya ingin menggambar lingkaran pada gambar perangkat A, kemudian mengirimkan koordinat pusat ke perangkat B, dan menggambar lingkaran pada posisi yang sama, meskipun gambar yang sama memiliki ukuran yang berbeda.
Yang saya lakukan pada perangkat A sebelum mengirimkan koordinat x adalah sebagai berikut:
float density = getResources().getDisplayMetrics().density;
int width = getWidth();
float inchesLength = width/density;
float scaledXCenter = xCenter / inchesLength;
Saya melakukan hal yang sama untuk koordinat y.
Di perangkat B, saya mendapatkan parameter yang sama dan mengalikan koordinat yang diterima dengan inciPanjang:
float density = getResources().getDisplayMetrics().density;
int width = getWidth();
float inchesLength = width/density;
float restoredXCenter = scaledXCenter * inchesLength;
Saya sedang menguji ini pada AVD. Masalahnya adalah setiap AVD memiliki kepadatan layar 1, meskipun saya dapat melihat dengan jelas bahwa pada perangkat yang lebih kecil (perangkat A), gambar yang sama ditampilkan sepenuhnya, tetapi menempati ruang yang lebih kecil!
Haruskah pendekatan ini berhasil saat bekerja pada perangkat nyata?
Apakah ada cara yang lebih baik untuk melakukannya?