Android怎么实现网易新闻的图文混排?
16lz
2021-01-24
刚开始以为是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; } @Override public 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; @Override public 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()); } } @Override public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { setDrawable(new BitmapDrawable(ShopApp.GLOBAL_CONTEXT.getResources(), bitmap)); } @Override public void onBitmapFailed(Drawable errorDrawable) { setDrawable(errorDrawable); } @Override public void onPrepareLoad(Drawable placeHolderDrawable) { } }}
调用非常简单:
contentView.setText(Html.fromHtml(dto.content, new PicassoImageGetter(contentView), null));
更多相关文章
- android 源码和兼容包
- Android中的SharedPreference源码整理总结
- android可视化视图无法显示layout控件
- Android底层开发(一)Android源码编译
- Android源码开发中单个模块的编译自动化
- android系统移植琐碎知识整理:
- android TV开发:弹出菜单实现
- 2013最新Android常用的工具类整理
- Android(安卓)源码编译环境流程