WebView加载部分Html代码

Html内容可以是图片,文字,链接,图片可以是从服务器获取的,也可以是assert文件夹下

目标代码String content = "

文字部分文字部分文字部分文字部分文字部分文字部分。
文字部分文字部分文字部分文字部分文字部分

";

方法一:使用TextView加载

TextView的重构方法fromHtml(String source, Html.ImageGetter imageGetter, Html.TagHandler tagHandler),这里Html.TagHandler tagHandler可以为null

        mTxtHtml.setText(Html.fromHtml(content, new ImageGetter() {

            @Override
            public Drawable getDrawable(String source) {
                Drawable myDrawable = null;
                try {
                    myDrawable = Drawable.createFromStream(
                            new URL(source).openStream(), "baidu_sylogo1.gif");

                } catch (MalformedURLException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                if (myDrawable != null) {
                    myDrawable.setBounds(0, 0, myDrawable.getIntrinsicWidth(),
                            myDrawable.getIntrinsicHeight());
                }
                return myDrawable;
            }
        }, null));

也可以这样写

 1 mTxtHtml.setText(Html.fromHtml(content, imgGetter, null));
 2 ImageGetter imgGetter = new Html.ImageGetter() {
 3         @Override
 4         public Drawable getDrawable(String source) {
 5             Drawable drawable = Drawable.createFromPath(source); // Or fetch it
 6             // from the URL Important
 7             if (drawable != null) {
 8                 drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),
 9                         drawable.getIntrinsicHeight());
10             }
11             return drawable;
12         }
13     };

方法二:使用WebView

 1 WebView webView = (WebView) findViewById(R.id.web_view);
 2         WebSettings ws = webView.getSettings();
 3         ws.setJavaScriptEnabled(true); // 设置支持javascript脚本
 4         ws.setAllowFileAccess(true); // 允许访问文件
 5         ws.setBuiltInZoomControls(true); // 设置显示缩放按钮
 6         ws.setSupportZoom(true); // 支持缩放  /**
 7         // * 用WebView显示图片,可使用这个参数
 8         // * 设置网页布局类型:
 9         // * 1、LayoutAlgorithm.NARROW_COLUMNS : 适应内容大小
10         // * 2、LayoutAlgorithm.SINGLE_COLUMN:适应屏幕,内容将自动缩放
11         // */
12         ws.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS);
13         ws.setDefaultTextEncodingName("utf-8"); // 设置文本编码
14         ws.setAppCacheEnabled(true);
15         ws.setCacheMode(WebSettings.LOAD_DEFAULT);// 设置缓存模式
16         //添加Javascript调用java对象
17         webView.addJavascriptInterface(this, "java2js");
18         webView.setWebViewClient(new WebViewClientDemo());
19         webView.setWebChromeClient(new WebViewChromeClientDemo());
20         // 设置打开的网页
21         // webView.loadUrl("http://orgcent.com");
22         // 使用WebView来显示图片
23         webView.loadData(content, "text/html", "utf8");
 1 private class WebViewClientDemo extends WebViewClient {
 2         @Override
 3         public boolean shouldOverrideUrlLoading(WebView view, String url) {
 4             view.loadUrl(url);// 当打开新链接时,使用当前的 WebView,不会使用系统其他浏览器
 5             return true;
 6         }
 7     }
 8 
 9     private class WebViewChromeClientDemo extends WebChromeClient {
10         // 设置网页加载的进度条
11         public void onProgressChanged(WebView view, int newProgress) {
12         }
13 
14         // 获取网页的标题
15         public void onReceivedTitle(WebView view, String title) {
16         }
17 
18         // JavaScript弹出框
19         @Override
20         public boolean onJsAlert(WebView view, String url, String message,
21                 JsResult result) {
22             return super.onJsAlert(view, url, message, result);
23         }
24 
25         // JavaScript输入框
26         @Override
27         public boolean onJsPrompt(WebView view, String url, String message,
28                 String defaultValue, JsPromptResult result) {
29             return super.onJsPrompt(view, url, message, defaultValue, result);
30         }
31 
32         // JavaScript确认框
33         @Override
34         public boolean onJsConfirm(WebView view, String url, String message,
35                 JsResult result) {
36             return super.onJsConfirm(view, url, message, result);
37         }
38     }

PS:引自网上的话:“如果你的图片是从网络上获取的,那么你一定不要用这种方法显示一张图片,因为这是最垃圾的办法,你的程序会经常被卡死。”做项目的时候没有遇到过,不知道是不是这样

http://www.ideasandroid.com/archives/378

参考:http://my.oschina.net/keeponmoving/blog/73706

http://my.oschina.net/caikezhan/blog/51568

http://orgcent.com/android-textview-no-underline-hyperlink/实现无下划线超链接

转载于:https://www.cnblogs.com/cc-Cheng/archive/2012/10/26/2740875.html

你可能感兴趣的:(WebView加载部分Html代码)