2019独角兽企业重金招聘Python工程师标准>>>
刚开始以为是WebView,后来发现被坑了。不断在https://impress.pw寻找,找到http://stackoverflow.com/questions/25194549/using-picasso-with-image-getter
问题解决,贴一下源码:
public class PicassoImageGetter implements Html.ImageGetter {private TextView textView = null;public PicassoImageGetter(TextView target) {textView = target;}@Overridepublic Drawable getDrawable(final String source) {BitmapDrawablePlaceHolder drawable = new BitmapDrawablePlaceHolder();Picasso.with(ShopApp.GLOBAL_CONTEXT).load(source).placeholder(R.drawable.item_defaut_img)
// .error(R.drawable.).into(drawable);return drawable;}class BitmapDrawablePlaceHolder extends BitmapDrawable implements Target {protected Drawable drawable;@Overridepublic void draw(final Canvas canvas) {if (drawable != null) {drawable.draw(canvas);}}public void setDrawable(Drawable drawable) {this.drawable = drawable;drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());if (textView != null) {textView.setText(textView.getText());}}@Overridepublic void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {setDrawable(new BitmapDrawable(ShopApp.GLOBAL_CONTEXT.getResources(), bitmap));}@Overridepublic void onBitmapFailed(Drawable errorDrawable) {setDrawable(errorDrawable);}@Overridepublic void onPrepareLoad(Drawable placeHolderDrawable) {}}
}
调用非常简单:
contentView.setText(Html.fromHtml(dto.content, new PicassoImageGetter(contentView), null));