我正在尝试将图片加载到图片视图中。图像的来源是JSON对象,格式类似于html图像,即图像标签。我已经看过像Picasso和通用图像加载器这样的潜在解决方案,但我不相信它们符合我想要的解决方案。我也尝试过下载图像然后将其加载到视图中的解决方案,但由于格式化源的方式,图像没有显示给我。 如何清洁图像源并将其加载到图像视图中?
我的JSON结构如下:
{"entries":[{"introtext":"<p><img src='something.jpg'/></p>"}]}
答案 0 :(得分:0)
尝试使用网络视图。
WebView view=(WebView) findViewById(R.id.webViev);
String data=new String();
如果在assets文件夹中使用本地图像,请按以下步骤操作。
data="<html><head></head><body><br/> <img src=\"file:///android_asset/photo.jpg\" height=\"150\" width=\"150\"/></body></html>";
view.loadDataWithBaseURL(null, data,"text/html", "utf-8",null);
如果要从url加载图像,请使用公共Drawable getDrawable(String source)来自Html.ImageGetter的函数。
每次在html中检测到标记时,都会调用此函数。
因此,覆盖此方法可以附加必要的前缀,例如
htt://yourdomain.com/images/ to the "something.jpg.." from the json .
你必须从这个函数返回一个drawable of image。
答案 1 :(得分:0)
WebView
可能是您的方法,但是根据响应的实际内容,您可能仍需要解析HTML以获取图像的来源 - 附加基本URL。完成后,您已经在字符串变量中拥有完整的图片网址 - 因此您可以加载图片并将其设置为ImageView
。
关于如何将图片从网址设置为ImageView
,有很多问题。我只是说明解析您的响应以获取该URL是多么简单。我将此答案基于JSOUP
library来解析HTML - 下载jar并将其包含在您的项目中。
private final static String BASE_URL = "http://www.somesite.com/appdir/";
// get your json in whichever way you do it.
String json = ...;
// parse the json and get the html corresponding to the first element in the array
String htmlSource = new JSONObject(json).getJSONArray("entries")
.getJSONObject(0)
.getString("introtext");
//use jsoup to parse the html source and get the src attribute of the first image
Document doc = Jsoup.parse(htmlSource);
String imgSrc = BASE_URL + doc.getElementsByTag("img").get(0).attr("src");
现在您已拥有图片的完整网址,加载该图片并将其设置为ImageView
是一项非常简单的任务。
请注意,您需要在上述代码中添加相应的错误处理。