zoukankan      html  css  js  c++  java
  • Textview解析带图片的html示例

     1 public class MainActivity extends Activity {
     2  private Handler handler;
     3  private String html;
     4  private TextView tv;
     5  private ProgressBar bar;
     6  @Override
     7  protected void onCreate(Bundle savedInstanceState) {
     8   super.onCreate(savedInstanceState);
     9   setContentView(R.layout.activity_main);
    10   // 网上找的html数据
    11   html = "<html><head><title>TextView使用HTML</title></head><body><p><strong>强调</strong></p><p><em>斜体</em></p>"
    12     + "<p><a href="http://www.jb51.net">超链接HTML入门</a>学习HTML!</p><p><font color="#aabb00">颜色1"
    13     + "</p><p><font color="#00bbaa">颜色2</p><h1>标题1</h1><h3>标题2</h3><h6>标题3</h6><p>大于>小于<</p><p>"
    14     + "下面是网络图片</p><img src="http://www.jb51.net/1207.jpg"/></body>"
    15     + "下面是网络图片</p><img src="http://www.jb51.net/207.jpg"/></body></html>";
    16   tv = (TextView) this.findViewById(R.id.id);
    17   bar = (ProgressBar) this.findViewById(R.id.id_bar);
    18   tv.setMovementMethod(ScrollingMovementMethod.getInstance());// 滚动
    19   handler = new Handler() {
    20    @Override
    21    public void handleMessage(Message msg) {
    22     // TODO Auto-generated method stub
    23     if (msg.what == 0x101) {
    24      bar.setVisibility(View.GONE);
    25      tv.setText((CharSequence) msg.obj);
    26     }
    27     super.handleMessage(msg);
    28    }
    29   };
    30   // 因为从网上下载图片是耗时操作 所以要开启新线程
    31   Thread t = new Thread(new Runnable() {
    32    Message msg = Message.obtain();
    33    @Override
    34    public void run() {
    35     // TODO Auto-generated method stub
    36     bar.setVisibility(View.VISIBLE);
    37     /**
    38      * 要实现图片的显示需要使用Html.fromHtml的一个重构方法:public static Spanned
    39      * fromHtml (String source, Html.ImageGetterimageGetter,
    40      * Html.TagHandler
    41      * tagHandler)其中Html.ImageGetter是一个接口,我们要实现此接口,在它的getDrawable
    42      * (String source)方法中返回图片的Drawable对象才可以。
    43      */
    44     ImageGetter imageGetter = new ImageGetter() {
    45      @Override
    46      public Drawable getDrawable(String source) {
    47       // TODO Auto-generated method stub
    48       URL url;
    49       Drawable drawable = null;
    50       try {
    51        url = new URL(source);
    52        drawable = Drawable.createFromStream(
    53          url.openStream(), null);
    54        drawable.setBounds(0, 0,
    55          drawable.getIntrinsicWidth(),
    56          drawable.getIntrinsicHeight());
    57       } catch (MalformedURLException e) {
    58        // TODO Auto-generated catch block
    59        e.printStackTrace();
    60       } catch (IOException e) {
    61        // TODO Auto-generated catch block
    62        e.printStackTrace();
    63       }
    64       return drawable;
    65      }
    66     };
    67     CharSequence test = Html.fromHtml(html, imageGetter, null);
    68     msg.what = 0x101;
    69     msg.obj = test;
    70     handler.sendMessage(msg);
    71    }
    72   });
    73   t.start();
    74  }
    75  @Override
    76  public boolean onCreateOptionsMenu(Menu menu) {
    77   // Inflate the menu; this adds items to the action bar if it is present.
    78   getMenuInflater().inflate(R.menu.main, menu);
    79   return true;
    80  }
    81 }
  • 相关阅读:
    02:找第一个只出现一次的字符
    11-Canvas
    07-jQuery
    06-JavaScript高级
    05-Web API
    03-京东项目
    剑与远征-兑换码
    04-JavaScript基础语法
    02-CSS
    01-HTML
  • 原文地址:https://www.cnblogs.com/itpepe/p/4770043.html
Copyright © 2011-2022 走看看