我在加载图片时如何处理imageView

时间:2016-06-16 07:17:25

标签: android imageview

如果某些ImageViewGridViewListView相关,并且我们希望在屏幕上显示某些图片,则通常会出现图片宽度和高度为零(0),所以当我们传递这些参数来计算压缩的Bitmap时会发生异常,我会回顾一些框架,但它对我来说仍然是一个问题。我想获得一些内核解决方案来解决这个问题。当ImageView的宽度和高度为0时我该怎么办。非常感谢任何帮助。

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

1 个答案:

答案 0 :(得分:0)

您需要使用全局布局侦听器。 类似的东西:

    yourView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            if (yourView.getHeight() > 0 && yourView.getWidth() > 0) {
                CompatUtil.removeOnGlobalLayoutListener(yourView, this);
                // do your stuff
            }
        }
    });