Html.from()加载网络图片
生活随笔
收集整理的這篇文章主要介紹了
Html.from()加载网络图片
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
TextView加載帶有圖片的Html時,會顯示一個藍色的小框框,而不會顯示圖片
想要顯示圖片,就需要調用fromHtml(String source, Html.ImageGetter imageGetter, Html.TagHandler tagHandler)方法。
重寫ImageGetter
先判斷drawable是否已經下載,沒有下載就開啟線程下載
下載圖片,并且等比例放大
private void getPic(final String s) {new Thread(new Runnable() {@Overridepublic void run() {try {final Drawable drawable = Drawable.createFromStream(new URL(s).openStream(), "");activity. runOnUiThread(new Runnable() {@Overridepublic void run() {if (drawable != null) {WindowManager wm = (WindowManager) activity.getSystemService(Context.WINDOW_SERVICE);DisplayMetrics outMetrics = new DisplayMetrics();wm.getDefaultDisplay().getMetrics(outMetrics);float picW = drawable.getIntrinsicWidth();float picH = drawable.getIntrinsicHeight();int width = outMetrics.widthPixels;drawable.setBounds(0,0,width,(int)((picH/picW)*width));pic = drawable;if (Build.VERSION.SDK_INT >= 24)text.setText(Html.fromHtml(resource,Html.FROM_HTML_MODE_COMPACT,imageGetter,null));elsetext.setText(Html.fromHtml(resource,imageGetter,null));}}});} catch (IOException e) {e.printStackTrace();}}}).start();}最后附上自己用的工具欄
import android.app.Activity; import android.content.Context; import android.graphics.drawable.Drawable; import android.os.Build; import android.text.Html; import android.util.DisplayMetrics; import android.util.Log; import android.view.WindowManager; import android.widget.TextView; import java.io.IOException; import java.net.URL;/*** Created by CKZ on 2017/8/8.*/public class HtmlUtils {private static HtmlUtils instance;private Activity activity;private TextView text;private Drawable pic;private String resource;private HtmlUtils(Activity activity,TextView text){this.activity =activity;this.text = text;}public static HtmlUtils getInstance(Activity activity,TextView text){if (instance == null){instance = new HtmlUtils(activity,text);}return instance;}public void setHtmlWithPic(String resource){this.resource = resource;if (Build.VERSION.SDK_INT >= 24)text.setText(Html.fromHtml(resource,Html.FROM_HTML_MODE_COMPACT,imageGetter,null));elsetext.setText(Html.fromHtml(resource,imageGetter,null));}Html.ImageGetter imageGetter = new Html.ImageGetter() {@Overridepublic Drawable getDrawable(String s) {if (pic != null) {Log.d("TAG", "顯示");return pic;}else {Log.d("TAG", "加載"+s);getPic(s);}return null;}};/*** 加載網絡圖片* @param s*/private void getPic(final String s) {new Thread(new Runnable() {@Overridepublic void run() {try {final Drawable drawable = Drawable.createFromStream(new URL(s).openStream(), "");activity. runOnUiThread(new Runnable() {@Overridepublic void run() {if (drawable != null) {WindowManager wm = (WindowManager) activity.getSystemService(Context.WINDOW_SERVICE);DisplayMetrics outMetrics = new DisplayMetrics();wm.getDefaultDisplay().getMetrics(outMetrics);float picW = drawable.getIntrinsicWidth();float picH = drawable.getIntrinsicHeight();int width = outMetrics.widthPixels;drawable.setBounds(0,0,width,(int)((picH/picW)*width));pic = drawable;if (Build.VERSION.SDK_INT >= 24)text.setText(Html.fromHtml(resource,Html.FROM_HTML_MODE_COMPACT,imageGetter,null));elsetext.setText(Html.fromHtml(resource,imageGetter,null));}}});} catch (IOException e) {e.printStackTrace();}}}).start();} }然后再Activity中調用
HtmlUtils.getInstance(this,texthtnl).setHtmlWithPic(resource); 即可。
總結
以上是生活随笔為你收集整理的Html.from()加载网络图片的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET5.0 初始
- 下一篇: InnoDB Adaptive Hash