使用TextView顯示網頁中的圖片

jopen 11年前發布 | 17K 次閱讀 TextView Android開發 移動開發

Html類下有一個ImageGetter接口可以幫助我們完成,直接上代碼:

MainActivity:

    package com.home.testhtml;  

    import java.io.IOException;  
    import java.net.MalformedURLException;  
    import java.net.URL;  

    import android.app.Activity;  
    import android.graphics.drawable.Drawable;  
    import android.os.Bundle;  
    import android.os.Handler;  
    import android.os.Message;  
    import android.text.Html;  
    import android.text.Html.ImageGetter;  
    import android.text.Spanned;  
    import android.widget.TextView;  

    public class MainActivity extends Activity {  
        private TextView tv;  
        private String htmlStr = "<h1>測試html的img標簽</h1><p font='red'>這里是測試內容</p><p><img src='http://xxx.com/test.jpg'></p>";  
        private Handler mHandler = new Handler() {  
            public void handleMessage(Message msg) {  
                Spanned sp = (Spanned) msg.obj;  
                tv.setText(sp);  
            };  
        };  

        @Override  
        protected void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            tv = new TextView(this);  
            setContentView(tv);  
            new Thread() {  
                public void run() {  
                    Spanned sp = Html.fromHtml(htmlStr, new MyImageGetter(), null);  
                    Message msg = new Message();  
                    msg.obj = sp;  
                    mHandler.sendMessage(msg);  
                };  
            }.start();  
        }  

        class MyImageGetter implements ImageGetter {  

            @Override  
            public Drawable getDrawable(String source) {  
                Drawable mDrawable = null;  
                try {  
                    mDrawable = Drawable.createFromStream(  
                            new URL(source).openStream(), "test.jpg");  
                    mDrawable.setBounds(0, 0, mDrawable.getIntrinsicWidth(),  
                            mDrawable.getIntrinsicHeight());  
                } catch (MalformedURLException e) {  
                    e.printStackTrace();  
                } catch (IOException e) {  
                    e.printStackTrace();  
                }  
                return mDrawable;  
            }  

        }  
    }  

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!