Android端末は画面サイズがばらばら
なので、1枚の画像を背景で表示して、ある部分(人なら頭など)をタッチすると特定のイベントが発生する。
といった処理をある端末の座標の固定値で指定しても別の端末では座標にずれが生じるてしまう。
そこで、ズレを回避するために画面全体のサイズを取得し、取得した値を基に計算をして動的に変化させる。
主な手順
1:どれか1つの端末で固定値*1を決める
2:WindowManagerを使用して画面サイズを取得
3:固定値と取得したサイズを割ってパーセンテージを割り出す(固定値 / 画面サイズ)*2
4:3で求めた数値を別の端末の画面サイズに掛けると最初に決めた端末とほぼ同じ座標で使用できる*3
*1:固定値は四角形の場合4点,円形の場合1点といった感じで好みに合わせる
*2:このときに100を掛けて整数値にしなくても良い
*3:小数点分の多少の誤差があります
以下ソースの抜粋
//1:画面サイズを取得
WindowManager wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE); Display disp = wm.getDefaultDisplay(); width = disp.getWidth(); height = disp.getHeight();
//2:取得した画面サイズからパーセンテージを取得(手作業)
//3:求めた数値を別の端末の画面サイズに掛ける※ここから別端末
WindowManager wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE); Display disp = wm.getDefaultDisplay(); width = disp.getWidth(); height = disp.getHeight(); X01= (int)((float)width*『数値(小数点第2)』); X02 = (int)((float)width*0.55f); //例 Y03 = (int)((float)height*『数値(小数点第2)』); Y04 = (int)((float)height*0.55f); //例
以上で最初の端末とほぼ同じ座標でイベントを動作させることができます。
※注
上記の方法は携帯端末用に作りました。
タブレット端末では上部のステータスバーがないためにズレが生じます。
このときはY座標に-50をしてあげれば概ね合います!(適当ですいません。
XOOMで検証したので他の端末は不明です。