CatchtheCowsでImageMapウィジェットを使用しています。このウィジェット(imageViewを拡張する)は、画像とマップのリソースがres /フォルダーに格納されることを前提としているため、それらをレイアウトxmlに設定します。
SDカードに保存されている自分のリソースを使いたい。そこで、マップファイルパスとイメージファイルパスの両方を受け取るコンストラクターを作成しました。
問題が発生するのは、このウィジェットでは、ビットマップをそれに応じてスケーリングするために、imageViewの幅と高さを事前に計算する必要があるためです。ただし、プログラムでimageViewを追加しても、onSizeChangedイベントは発生しないようです。
この問題を回避するにはどうすればよいですか?
これが私がImageMapを作成する方法です:
mImageMap = new ImageMap(getApplicationContext(),"maps.xml", "/sdcard/media/myimage.jpg");
setContentView(mImageMap, new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT));
これは前述のコンストラクターです。
public ImageMap(Context context, String mapFile, String imageFile) {
super(context);
Bitmap b = BitmapFactory.decodeFile(imageFile);
this.setImageBitmap(b);
init();
loadMapFromSDCard("maps.xml");
}