android教程之textview解析帶圖片的html示例
public class MainActivity extends Activity {
private Handler handler;
private String html;
private TextView tv;
private ProgressBar bar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 網(wǎng)上找的html數(shù)據(jù)
html = "<html><head><title>TextView使用HTML</title></head><body><p><strong>強調(diào)</strong></p><p><em>斜體</em></p>"
+ "<p><a href=\"http://www.dhdzp.com">超鏈接HTML入門</a>學(xué)習(xí)HTML!</p><p><font color=\"#aabb00\">顏色1"
+ "</p><p><font color=\"#00bbaa\">顏色2</p><h1>標(biāo)題1</h1><h3>標(biāo)題2</h3><h6>標(biāo)題3</h6><p>大于>小于<</p><p>"
+ "下面是網(wǎng)絡(luò)圖片</p><img src=\"http://www.dhdzp.com/1207.jpg\"/></body>"
+ "下面是網(wǎng)絡(luò)圖片</p><img src=\"http://www.dhdzp.com/207.jpg\"/></body></html>";
tv = (TextView) this.findViewById(R.id.id);
bar = (ProgressBar) this.findViewById(R.id.id_bar);
tv.setMovementMethod(ScrollingMovementMethod.getInstance());// 滾動
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
if (msg.what == 0x101) {
bar.setVisibility(View.GONE);
tv.setText((CharSequence) msg.obj);
}
super.handleMessage(msg);
}
};
// 因為從網(wǎng)上下載圖片是耗時操作 所以要開啟新線程
Thread t = new Thread(new Runnable() {
Message msg = Message.obtain();
@Override
public void run() {
// TODO Auto-generated method stub
bar.setVisibility(View.VISIBLE);
/**
* 要實現(xiàn)圖片的顯示需要使用Html.fromHtml的一個重構(gòu)方法:public static Spanned
* fromHtml (String source, Html.ImageGetterimageGetter,
* Html.TagHandler
* tagHandler)其中Html.ImageGetter是一個接口,我們要實現(xiàn)此接口,在它的getDrawable
* (String source)方法中返回圖片的Drawable對象才可以。
*/
ImageGetter imageGetter = new ImageGetter() {
@Override
public Drawable getDrawable(String source) {
// TODO Auto-generated method stub
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) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return drawable;
}
};
CharSequence test = Html.fromHtml(html, imageGetter, null);
msg.what = 0x101;
msg.obj = test;
handler.sendMessage(msg);
}
});
t.start();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
相關(guān)文章
Android編程實現(xiàn)獲取新浪天氣預(yù)報數(shù)據(jù)的方法
這篇文章主要介紹了Android編程實現(xiàn)獲取新浪天氣預(yù)報數(shù)據(jù)的方法,涉及Android基于新浪接口的調(diào)用及數(shù)據(jù)處理技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11
導(dǎo)入takephoto庫編譯失敗與glide庫沖突應(yīng)排除依賴
今天小編就為大家分享一篇關(guān)于導(dǎo)入takephoto庫編譯失敗與glide庫沖突應(yīng)排除依賴的文章,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-10-10
Android通過ConnectivityManager檢查網(wǎng)絡(luò)狀態(tài)
這篇文章主要為大家詳細介紹了Android通過ConnectivityManager檢查網(wǎng)絡(luò)狀態(tài)的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-08-08
如何玩轉(zhuǎn)Android矢量圖VectorDrawable
這篇文章主要教大家如何玩轉(zhuǎn)Android矢量圖VectorDrawable,對矢量圖感興趣的小伙伴們可以參考一下2016-05-05
Android開發(fā)仿掃一掃實現(xiàn)拍攝框內(nèi)的照片功能
無論是微信還是支付寶掃一掃功能很常用,那么它基于代碼是如何實現(xiàn)的呢?今天小編給大家分享android開發(fā)之仿掃一掃實現(xiàn)拍攝框內(nèi)的照片功能,感興趣的朋友一起學(xué)習(xí)吧2016-09-09

