GridView
またはListView
に関連するものがあり、画像の幅と高さの値がゼロになることがよくあります(0)ですので、圧縮されたビットマップを計算するためにこの引数を渡したときに例外が発生しますが、私はいくつかのフレームワークをレビューしますが、それでも私にとっては問題です。この問題を解決するためのカーネルソリューションをいくつか取得します。 ImageView
の幅と高さが0の場合はどうすればよいですか。画像をロードしているときにimageViewを処理する方法
public void loadImage(final ImageView imageView, final String imageUrl){
mExecutor.execute(new PriorityRunnable(mThreadsCount) {
@Override
public void doSomething() {
while(!mExecutor.isPause()){
if(imageView != null && imageView.getTag().equals(imageUrl)){
mImageCache.loadImage(imageView, imageUrl);
}
}
}
});
}
public void loadImage(ImageView imageView, String imageUrl){
//readFromMemoryCache
Bitmap bitmap = getBitmap(imageUrl);
if(bitmap != null){
mImageView = imageView;
mBitmap = bitmap;
mHandler.sendEmptyMessage(DISPLAY_IMAGE);
return;
}
int width = imageView.getWidth();
int height = imageView.getHeight();
//because width = 0, so it doesn't do anything, only return
if(width == 0 || height == 0){
return;
}
//load from http or disk
bitmap = getBitmap(imageUrl, width, height);
if(bitmap != null){
mImageView = imageView;
mBitmap = bitmap;
mHandler.sendEmptyMessage(DISPLAY_IMAGE);
}
}
レイアウトが測定されるまで画像の読み込みを遅らせることができます。それを行う方法の[this so entry](http://stackoverflow.com/questions/12068945/get-layout-height-and-width-at-run-time-android)を参照してください。 – GPuschka
イメージのサイズはどこにありますか? onCreate()で? –
新しいスレッドを作成して画像のサイズを計算します。@ Alex Hong Hong – wislie