Android學習筆記二《轉》

聲明html

   此文章爲轉載,並且寫的還算不錯。。java

 結構android

繼承關係web

public class Html extends Object瀏覽器

      

java.lang.Objectide

       android.text.Html函數

 

類概述測試

該類主要用來格式化html格式的文本,像瀏覽器同樣對html標籤進行解析,渲染輸出,但並非全部的標籤都被支持!(譯者注:固然你自定義的標籤默認確定不被支持,但能夠經過實現Html.TagHandler這個接口來自我解析。下面會講到。)字體

 

 

內部類spa

interface     Html.ImageGetter

用來檢索HTML中的<img>標籤。(譯者注:若是實現了這個接口,當解析的時候遇到<img> 標籤時會回調ImageGettergetDrawable(String source)方法,並返回一個Drawable對象,該方法參數爲<img>標籤的src屬性的值)

 

interface     Html.TagHandler

用來通知當解析器遇到沒法識別的標籤時該做出何種處理

 

 

公共方法

public static Spanned fromHtml (String source)

返回經過TagSoup TagSoup 是一個Java開發符合SAXHTML解析器 受權協議)解析器解析以後的可直接顯示的文本,任何<img>則由默認的通常圖片所替代,固然也能夠經過實現Html.ImageGetter接口來顯示真正的圖片。

參數

source      待處理的html文本

 

         public static Spanned fromHtml (String source, Html.ImageGetter imageGetter, Html.TagHandler tagHandler)

同上,不一樣的是當遇到img標籤,或解析器沒法識別的標籤時分別觸發註冊的兩個對象來進行處理。

參數

source               爲待處理的html文本

imageGetter    Html.ImageGetter對象

tagHandler       Html.TagHandler 

 

public static String toHtml (Spanned text)

該方法徹底能夠理解爲fromHtml()的可逆函數,將Spanned 類型的文本還原爲HTML文本。

 

       示例代碼

public class Main extends Activity {

 

   @Override

   protected void onCreate(Bundle savedInstanceState) {

      super.onCreate(savedInstanceState);

      setContentView(R.layout.main);

      TextView tv = (TextView) findViewById(R.id.demo);

     

      // 貌似都不支持HTML標籤的屬性,及CSS樣式,下面使用到的字體顏色都不被支持

      //String html = "<h2>html測</h2><pstyle='color:red;'>這是測試內容</p><p><imgsrc='http://www.baidu.com/img/baidu_sylogo1.gif'></p>";

String html = "<h2>html測試</h2><p font='red'>這是測試內容</p><p><img src='http://www.baidu.com/img/baidu_sylogo1.gif'></p>";

     

      tv.setText(Html.fromHtml(html,newHtml.ImageGetter(){

 

        @Override

        public Drawable getDrawable(String source) {

           Drawable myDrawable = null;

           try {

              myDrawable = Drawable.createFromStream(newURL(source).openStream(), "baidu_sylogo1.gif");

           } catch (MalformedURLException e) {

              e.printStackTrace();

           } catch (IOException e) {

              e.printStackTrace();

           }

          

           myDrawable.setBounds(0, 0, myDrawable.getIntrinsicWidth(), myDrawable.getIntrinsicHeight());

          

           return myDrawable;

        }},null));

   }

 

}

相關文章
相關標籤/搜索