webview加载html

在Android中,使用WebView加载HTML时,如果HTML包含图片,需要特别处理。通过设置ImageGetter,并结合Handler,可以实现HTML内容与图片的正确加载。避免出现只加载纯文本而图片不显示的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class MyActivity extends BaseActivity implements OnClickListener {
 
 


private void initHtml(final String html) {
final Handler htmlHandler;
 
htmlHandler = new Handler() {
@Override
public void handleMessage(Message msg) {

if (msg.what == 0x101) {

//这个是只加载纯文本的html链接,当html包含文字时则会出现加载不显示的异常

//body.loadData(html, "text/html", "UTF-8");

//这个是加载包含图片的html(重点在ImageGetter,事先把html中的文字和图片分开解析并传回来,在对webview进行加载)

body.loadDataWithBaseURL(null, html, "text/html", "utf-8", null);
}
super.handleMessage(msg);
}
};
// 因为从网上下载图片是耗时操作 所以要开启新线程
Thread t = new Thread(new Runnable() {
Message msg = Message.obtain();


@Override
public void run() {
/**
* 要实现图片的显示需要使用Html.fromHtml的一个重构方法:public static Spanned
* fromHtml (String source, Html.ImageGetterimageGetter,
* Html.TagHandler
* tagHandler)其中Html.ImageGetter是一个接口,我们要实现此接口,在它的getDrawable
* (String source)方法中返回图片的Drawable对象才可以。
*/
ImageGetter imageGetter = new ImageGetter() {
@Override
public Drawable getDrawable(String source) {
URL url;
Drawable drawable = null;
try {
url = new URL(source);
drawable = Drawable.createFromStream(url.openStream(), null);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return drawable;
}
};
CharSequence test = Html.fromHtml(html, imageGetter, null);
msg.what = 0x101;
msg.obj = test;
htmlHandler.sendMessage(msg);
}
});
t.start();


}


}


这样使用webview来加载html,通过把文字图片分开解析!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值