1

我已经在我的项目中使用 Fresco 库。我想知道我们是否也可以在ImageGetterfrom中使用它Html.HtmlFrom。这是我的代码作为示例。

public class ItemActivity extends AppCompatActivity implements Html.ImageGetter {

    private TextView contentTextView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_item);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        contentTextView = (TextView) this.findViewById(R.id.itemContentTextView);

        String content = getIntent().getStringExtra("content");

        contentTextView.setText(Html.fromHtml(content, this, null));
    }

    @Override
    public Drawable getDrawable(String source) {
        return null;
    }
}

我尝试使用如下:

public Drawable getDrawable(String source) {
        SimpleDraweeView draweeView = new SimpleDraweeView(getBaseContext());
        draweeView.setImageURI(Uri.parse(source));
        return draweeView.getDrawable();
    }

但没有加载任何图片。有什么办法可以做到吗?

4

2 回答 2

0

你需要使用getTopLevelDrawable(),而不是getDrawable()

于 2015-11-11T19:51:39.417 回答
0
public Drawable getDrawable(String source) {
        if (Strings.isNullOrEmpty(source)) {
            return null;
        }
        SimpleDraweeView simpleDraweeView = new SimpleDraweeView(mContext);
        ImageRequestBuilder imageRequestBuilder = ImageRequestBuilder.newBuilderWithSource(Uri.parse(source));
        DraweeController draweeController = Fresco.newDraweeControllerBuilder()
                .setImageRequest(imageRequestBuilder.build())
                .setOldController(simpleDraweeView.getController())
                .setAutoPlayAnimations(true)
                .build();
        simpleDraweeView.setController(draweeController);
        Drawable drawable = simpleDraweeView.getDrawable();
        drawable.setBounds(0, 0, 100, 100);
        return drawable;
    }
于 2016-05-11T10:03:24.987 回答