画像に合わせてノードの位置を操作する必要があると思います。
以下のコードを使用してImageView
、レイアウト内の特定の位置にプログラムで追加できます(必要に応じてサイズを強制します)。
これは単なる例であり、固定のドローアブルを使用しています(メソッドにパラメーターとして渡すように変更する必要があります)。追加する代わりに、既存のビューを移動するように変更することもできます。
private ImageView addImageView(RelativeLayout mainLayout, int x, int y, int width, int height, OnClickListener onClickListener){
ImageView imageView = new ImageView(this);
imageView.setAdjustViewBounds(false);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.height = height;
params.width = width;
imageView.setLayoutParams(params);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageView.setImageDrawable(getResources().getDrawable(R.drawable.marker_red));
//imageView.setBackgroundColor(Color.BLUE);
params.leftMargin = x - width/2;
params.topMargin = y - height/2;
imageView.setOnClickListener(onClickListener);
mainLayout.addView(imageView);
return imageView;
}
詳細が必要な場合はお知らせください。
-編集済み--
親レイアウト内で位置を取得するには、API11以降を使用getX()
してgetY()
いる場合に使用できます。
API <11を使用している場合は、次を使用して(画面内の)生の位置を取得できます。
private boolean inViewBounds(View view, int x, int y){
view.getDrawingRect(outRect);
view.getLocationOnScreen(location);
outRect.offset(location[0], location[1]);
return outRect.contains(x, y);
}
また、親レイアウトの生の座標を、親を基準にしたobation座標に差し引く必要があります。
それが役に立てば幸い。
よろしく。