毕加索没有将位图加载到带有目标的imageview中

时间:2015-05-18 17:03:58

标签: android picasso

我正在尝试将一个网址加载到ImageView中,但Target似乎没有像我发现的那样工作。以下是我的代码:

ImageView methodButton= (ImageView) View.inflate(context, R.layout.view_home_scroll_view_image, null);
setMethodPicture(sectionModel.getContent().get(0).getThumbnail(), methodButton);
methodsContainer.addView(methodButton);

private void setMethodPicture(final String methodPicture, final ImageView methodButton){
    methodButton.setBackgroundColor(0x000000);
    if (!StringUtils.isEmpty(methodPicture)) {
        Target target = new Target() {
            @Override
            public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
                methodButton.setImageBitmap(bitmap);
            }

            @Override
            public void onBitmapFailed(Drawable errorDrawable) {

            }

            @Override
            public void onPrepareLoad(Drawable placeHolderDrawable) {

            }

            @Override
            public boolean equals(Object o) {
                return methodPicture.equals(o);
            }

            @Override
            public int hashCode() {
                return methodPicture.hashCode();
            }
        };
        Picasso.with(context).load(methodPicture).into(target);
    }
}

这不会将图片加载到imageView,但是当我这样做时,

ImageView methodButton= (ImageView) View.inflate(context, R.layout.view_home_scroll_view_image, null);
methodButton.setBackgroundColor(0x000000);
Picasso.with(context).load(sectionModel.getContent().get(0).getThumbnail()).into(methodButton);
methodsContainer.addView(methodButton);

它会加载图片。 我想做第一个,所以我可以在我将它放入ImageView之前更改我得到的位图,比如改变宽度和高度,但是基于原始尺寸。

2 个答案:

答案 0 :(得分:1)

我发现了这个问题,毕加索对目标有一个弱的参考。正确的答案可以在这里找到:onBitmapLoaded of Target object not called on first load

答案 1 :(得分:0)

使用Glide代替,它提供了预定义的约束选项,您可以随其添加

https://github.com/bumptech/glide