画面サイズと密度が異なる 2 つの異なるデバイスに画像があります。
キャンバスを使用して、デバイスAの画像に円を描き、中心座標をデバイスBに送信し、同じ画像のサイズが異なっていても、同じ位置に円を描きたいです。
x座標を送信する前にデバイスAで行うことは次のとおりです。
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) では同じ画像が完全に表示されていることがはっきりとわかりますが、占めるスペースは小さくなります!
このアプローチは、実際のデバイスで作業するときに機能する必要がありますか?
それを行うより良い方法はありますか?