1

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");
    }
4

1 に答える 1

0

ImageView実際にレンダリングされる前のサイズを取得しようとしているようです。これにより、ゼロが返されます。ビューサイズは、レンダリング後にのみ定義されます。

addOnGlobalLayoutListenerが問題を解決する可能性があるため、レンダリングが完了した後にのみサイズを取得します

于 2013-02-07T16:35:55.510 に答える