android —— textview解析html富文本
activity 里的
HttpUtil.sendOkHttpRequest(url, new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { final String string = response.body().string(); Gson gson = new Gson(); final ContentJson content = gson.fromJson(string,ContentJson.class); final Spanned spanned = Html.fromHtml(content.getBody(),new UrlImageGetter(NewsActivity.this),null); runOnUiThread(new Runnable() { @Override public void run() { newsText.setText(spanned); } }); } });
两个工具类
package com.example.zsbenweather.util; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.text.Html; import androidx.appcompat.widget.DrawableUtils; import com.example.zsbenweather.gson.ContentJson; import java.io.IOException; import okhttp3.Call; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; public class UrlImageGetter implements Html.ImageGetter { Context mContext; public UrlImageGetter(Context context){ mContext=context; } @Override public Drawable getDrawable(String source) { try{ //请求获取图片 OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder().url(source).build(); Call call = client.newCall(request); Response response = call.execute(); //加载图片 Bitmap bitmap = BitmapFactory.decodeStream(response.body().byteStream()); Drawable drawable = new BitmapDrawable(bitmap); //调整图片大小 DrawableUtil drawableUtil = new DrawableUtil(mContext); drawable = drawableUtil.utils(drawable); return drawable; }catch (IOException e){ e.printStackTrace(); } return null; } }
package com.example.zsbenweather.util; import android.content.Context; import android.graphics.drawable.Drawable; import android.util.DisplayMetrics; import android.view.Display; public class DrawableUtil { Context mContext; public DrawableUtil(Context context){ mContext = context; } public Drawable utils(Drawable drawable){ DisplayMetrics displayMetrics = mContext.getResources().getDisplayMetrics(); int width = displayMetrics.widthPixels; int height = displayMetrics.heightPixels; int draWidth = drawable.getIntrinsicWidth(); int draHeight = drawable.getIntrinsicHeight(); int resWidth = draWidth,resHeight = draHeight; if(draWidth<width && draHeight<height){ resWidth = (int) (draWidth*2.5); resHeight = (int) (draHeight*2.5); }else if (draHeight > width || draHeight > height){ int value = draWidth/width; resWidth = draWidth/value; resHeight = draHeight/value; } drawable.setBounds(0,0,resWidth,resHeight); return drawable; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
2019-03-24 在线版区间众数 hzw的代码。。