数据格式为

{"sid":"737",

"tts":"http:\/\/news.iciba.com\/admin\/tts\/2013-12-11.mp3",

"content":"I don't want us to be together because we have to,I want us to be together because we want to.",

"note":"\u6211\u4e0d\u5e0c\u671b\u6211\u4eec\u56e0\u4e3a\u201c\u4e0d\u5f97\u4e0d\u201d\u800c\u5728\u4e00\u8d77\uff0c\u6211\u5e0c\u671b\u6211\u4eec\u662f\u56e0\u4e3a\u60f3\u5728\u4e00\u8d77\u800c\u5728\u4e00\u8d77\u3002",

"translation":"\u611f\u8c22@\u7a0b\u5f88\u591a\u8981\u79d2\u8650\u6570\u5b66 \u6295\u7a3f\u3002\u8bcd\u9738\u5c0f\u7f16\uff0c\u8fd9\u53e5\u8bdd\u6765\u81ea\u300a\u51b0\u6cb3\u4e16\u7eaa2\u300b\uff0c\u662f\u4e00\u4e2a\u7cfb\u5217\u7684\u52a8\u753b\u7535\u5f71\uff0c\u975e\u5e38\u641e\u7b11\uff0c\u4f60\u770b\u8fc7\u5417\uff1f",

"picture":"http:\/\/cdn.iciba.com\/news\/word\/2013-12-11.jpg","picture2":"http:\/\/cdn.iciba.com\/news\/word\/big_2013-12-11b.jpg","caption":"\u8bcd\u9738\u6bcf\u65e5\u4e00\u53e5",

"dateline":"2013-12-11",

"s_pv":"8693",

"sp_pv":"2090",

"tags":[{"id":"9","name":"\u7231\u60c5"},{"id":"14","name":"\u7535\u5f71\u7ecf\u5178"}],

"fenxiang_img":"http:\/\/cdn.iciba.com\/web\/news\/longweibo\/imag\/2013-12-11.jpg"}

JSON字段解释

JSON 字段解释

{

'sid':'' #每日一句ID

'tts': '' #音频地址

'content':'' #英文内容

'note': '' #中文内容

'translation':'' #词霸小编

'picture': '' #图片地址

'picture2': '' #大图片地址

'caption':'' #标题

'dateline':'' #时间

's_pv':'' #浏览数

'sp_pv':'' #语音评测浏览数

'tags':'' #相关标签

'fenxiang_img':'' #合成图片,建议分享微博用的

}

最终实现的效果

具体实现,使用AsynTask异步访问网络:

class Load extends AsyncTask

{

public String url = "http://open.iciba.com/dsapi/";

ProgressDialog pdlg;

String jsonstr = "";

JSONObject json = null;

@Override

protected String doInBackground(String... params) {

//TODO Auto-generated method stub

try{

DefaultHttpClient httpClient = new DefaultHttpClient();

HttpPost httppost = new HttpPost(url);

HttpResponse httpResponse = httpClient.execute(httppost);

HttpEntity httpEntity = httpResponse.getEntity();

InputStream is = httpEntity.getContent();

BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));

StringBuilder sb = new StringBuilder();

String line = null;

while ((line = reader.readLine()) != null)

{

sb.append(line + "\n");

}

is.close();

jsonstr = sb.toString();

json = new JSONObject(jsonstr.toString());

engstr = json.getString("content");

chistr = json.getString("note");

imagurl = json.getString("picture");

timestr = json.getString("dateline");

fromstr = json.getString("translation");

JSONArray array = json.getJSONArray("tags");

for(int i=0;i

{

JSONObject tag = (JSONObject)array.get(i);

tagstr += tag.getString("name")+"," ;

}

}catch(Exception e)

{

e.printStackTrace();

}

return null;

}

@Override

protected void onPostExecute(String result) {

//TODO Auto-generated method stub

super.onPostExecute(result);

pdlg.dismiss();

imageLoader.DisplayImage(imagurl,imageview);

eng.setText(" "+engstr);

chi.setText(" "+chistr);

tag.setText(tagstr);

time.setText(timestr);

from.setText(" "+fromstr);

}

@Override

protected void onPreExecute() {

//TODO Auto-generated method stub

super.onPreExecute();

pdlg = new ProgressDialog(context);

pdlg.setCancelable(false);

pdlg.setMessage("正在加载");

pdlg.show();

}

}

使用了一个图片处理的工具类,ImageLoader,主要用来通过url解析图片,处理图片的大小,以文件的形式缓存图片。

public class ImageLoader {

MemoryCache memoryCache=new MemoryCache();

FileCache fileCache;

private Map imageViews=Collections.synchronizedMap(new WeakHashMap());

ExecutorService executorService;

public ImageLoader(Context context){

fileCache=new FileCache(context);

executorService=Executors.newFixedThreadPool(5);

}

final int stub_id = R.drawable.drug_trans;

public void DisplayImage(String url, ImageView imageView)

{

imageViews.put(imageView, url);

Bitmap bitmap=memoryCache.get(url);

if(bitmap!=null)

imageView.setImageBitmap(bitmap);

else

{

queuePhoto(url, imageView);

imageView.setImageResource(stub_id);

}

}

private void queuePhoto(String url, ImageView imageView)

{

PhotoToLoad p=new PhotoToLoad(url, imageView);

executorService.submit(new PhotosLoader(p));

}

private Bitmap getBitmap(String url)

{

File f=fileCache.getFile(url);

//from SD cache

Bitmap b = decodeFile(f);

if(b!=null)

return b;

//from web

try {

Bitmap bitmap=null;

URL imageUrl = new URL(url);

HttpURLConnection conn = (HttpURLConnection)imageUrl.openConnection();

conn.setConnectTimeout(30000);

conn.setReadTimeout(30000);

conn.setInstanceFollowRedirects(true);

InputStream is=conn.getInputStream();

OutputStream os = new FileOutputStream(f);

Utils.CopyStream(is, os);

os.close();

bitmap = decodeFile(f);

return bitmap;

} catch (Exception ex){

ex.printStackTrace();

return null;

}

}

//decodes image and scales it to reduce memory consumption

private Bitmap decodeFile(File f){

try {

//decode image size

BitmapFactory.Options o = new BitmapFactory.Options();

o.inJustDecodeBounds = true;

BitmapFactory.decodeStream(new FileInputStream(f),null,o);

//Find the correct scale value. It should be the power of 2.

final int REQUIRED_SIZE=70;

int width_tmp=o.outWidth, height_tmp=o.outHeight;

int scale=1;

while(true){

if(width_tmp/1.5

break;

width_tmp/=1.5;

height_tmp/=1.5;

scale*=1.5;

}

//decode with inSampleSize

BitmapFactory.Options o2 = new BitmapFactory.Options();

o2.inSampleSize=scale;

return BitmapFactory.decodeStream(new FileInputStream(f), null, o2);

} catch (FileNotFoundException e) {}

return null;

}

//Task for the queue

private class PhotoToLoad

{

public String url;

public ImageView imageView;

public PhotoToLoad(String u, ImageView i){

url=u;

imageView=i;

}

}

class PhotosLoader implements Runnable {

PhotoToLoad photoToLoad;

PhotosLoader(PhotoToLoad photoToLoad){

this.photoToLoad=photoToLoad;

}

@Override

public void run() {

if(imageViewReused(photoToLoad))

return;

Bitmap bmp=getBitmap(photoToLoad.url);

memoryCache.put(photoToLoad.url, bmp);

if(imageViewReused(photoToLoad))

return;

BitmapDisplayer bd=new BitmapDisplayer(bmp, photoToLoad);

Activity a=(Activity)photoToLoad.imageView.getContext();

a.runOnUiThread(bd);

}

}

boolean imageViewReused(PhotoToLoad photoToLoad){

String tag=imageViews.get(photoToLoad.imageView);

if(tag==null || !tag.equals(photoToLoad.url))

return true;

return false;

}

//Used to display bitmap in the UI thread

class BitmapDisplayer implements Runnable

{

Bitmap bitmap;

PhotoToLoad photoToLoad;

public BitmapDisplayer(Bitmap b, PhotoToLoad p){bitmap=b;photoToLoad=p;}

public void run()

{

if(imageViewReused(photoToLoad))

return;

if(bitmap!=null)

photoToLoad.imageView.setImageBitmap(bitmap);

else

photoToLoad.imageView.setImageResource(stub_id);

}

}

public void clearCache() {

memoryCache.clear();

fileCache.clear();

}

}

其他精彩文章文章

每日一句api Android,Android 图文数据JSON解析,金山词霸每日一句API的调用相关推荐

  1. android从服务端获取json解析显示在客户端上面,Android服务端获取json解析显示在客户端上面.doc...

    Android服务端获取json解析显示在客户端上面 Android从服务端获取json解析显示在客户端上面 首先说一下Json数据的最基本的特点,Json数据是一系列的键值对的集合,和XML数据来比 ...

  2. Android网络数据JSON解析使用总结

    一.JSON基础知识 (一)什么是json JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于Java ...

  3. Qt on Android: http下载与Json解析

    百度提供有查询 ip 归属地的开放接口,当你在搜索框中输入一个 ip 地址进行搜索,就会打开由 ip138 提供的百度框应用,你可以在框内直接输入 ip 地址查询.我查看了页面请求,提取出查询 ip ...

  4. android开发笔记之Json解析

    在上篇文章中我们提到在Android开发中经常用到xml文件,当然跟服务器打交道,大部分还是喜欢用Json数据. Json的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性. JS ...

  5. Qt on Android:图文详解Hello World全过程

    这是系列文章中的一篇,阅读本文前请先阅读<Windows下Qt 5.2 for Android开发入门>,以便确保开发环境和作者一致. 部分文章被转发/转载却没有注明出处,特此声明:版权所 ...

  6. Android JSONObject – Android中的JSON解析

    Android JSONObject is used for JSON parsing in android apps. In this tutorial we'll discuss and impl ...

  7. python爬去新浪微博_!如何通过python调用新浪微博的API来爬取数据

    python抓取新浪微博,求教 爬手机端 可以参考的代码, #-*-coding:utf8-*- import smtplib from email.mime.text import MIMEText ...

  8. stm32 esp8266-01使用 get,post 请求数据以及json解析

    之前写的只是esp8266 AT指令详解说明,就写一个esp8266 get请求数据json解析.json 解析用的是Cjson,网上可以大家看一下.引用调用就行. 下面是esp8266 一些列操作, ...

  9. Google Maps API v2 android版本开发 国内手机不支持google play Service相关问题解决--图文教程

    Google Maps API v2 android版本开发 国内手机不支持google play Service相关问题解决--图文教程 参考文章: (1)Google Maps API v2 an ...

最新文章

  1. 网站文章中如何设置关键词才更有利于SEO优化?
  2. linux怎么添加工作组,linux 用户与工作组
  3. python2.面向对象学生管理系统
  4. MVC 扩展方法特点
  5. Oracle的JDBC Url的几种方式
  6. Java Double类shortValue()方法与示例
  7. 数字化时代的K12与学前教育行业洞察
  8. 苏宁易购第二次债券购回基本方案:购回资金总额20亿元
  9. Angular URL地址参数改变,视图不更新的解决办法(监听URL变化,重新加载数据方法)
  10. POJ 2253 1797
  11. 单循环链表和双向循环链表
  12. 深度 | Authing CTO 尚斯年:云时代下的数字身份自动化
  13. Hadoop3.3.2+hbase2.4.10org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not runn
  14. 有关上传到APPStore上iphone5,5c,4s下载应用,出现该APP与设备不兼容问题
  15. 8款最好用的固定资产管理软件
  16. 123房地产行业响应式html5模板 二手房源网站模板手机wap页html模板中介推广专题网页模板网站模板html5网页静态模板Bootstrap扁平化网站源码css3手机seo自适响应。
  17. Docker中批量删除 tag为none的镜像
  18. Centos7 Radius服务搭建
  19. vue3实现活跃度(热力图)
  20. 基于Oracle Sequence的流水号生成规则

热门文章

  1. Android 蓝牙/wifi云打印机 ESC/POS热敏打印机打印(ESC/POS指令篇)
  2. SNS运营之Tumblr迅速涨粉的20个方法-适用于海外社媒推广,外贸独立站,自建站,让你粉丝快速翻倍
  3. 如何下载最新电影高清资源?
  4. 拼多多根据ID取商品详情-API
  5. 通过js进行在线PDF电子签名和小编辑
  6. Windows 的应急事件分类-
  7. 微信小程序 函数防抖和函数节流
  8. 安装微软活动目录的八个重要理由
  9. eovs实训报告总结心得_实训报告心得体会范文大全
  10. 投资学实务-郑商所比赛-交易记录7