• Android 图文数据JSON解析,金山词霸每日一句API的调用


    数据格式为

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    {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:我不希望我们因为“不得不”而在一起,我希望我们是因为想在一起而在一起。,
    translation:感谢@程很多要秒虐数学 投稿。词霸小编,这句话来自《冰河世纪2》,是一个系列的动画电影,非常搞笑,你看过吗?,
    picture:http://cdn.iciba.com/news/word/2013-12-11.jpg,picture2:http://cdn.iciba.com/news/word/big_2013-12-11b.jpg,caption:词霸每日一句,
    dateline:2013-12-11,
    s_pv:8693,
    sp_pv:2090,
    tags:[{id:9,name:爱情},{id:14,name:电影经典}],
    fenxiang_img:http://cdn.iciba.com/web/news/longweibo/imag/2013-12-11.jpg}

    JSON字段解释

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    JSON 字段解释
    {
    'sid':'' #每日一句ID
    'tts': '' #音频地址
    'content':'' #英文内容
    'note': '' #中文内容
    'translation':'' #词霸小编
    'picture': '' #图片地址
    'picture2': '' #大图片地址
    'caption':'' #标题
    'dateline':'' #时间
    's_pv':'' #浏览数
    'sp_pv':'' #语音评测浏览数
    'tags':'' #相关标签
    'fenxiang_img':'' #合成图片,建议分享微博用的
    }

    最终实现的效果
    加载中...

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

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    class Load extends AsyncTask<string, string="">
        {
            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 +
    );
                    }
                    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<p>使用了一个图片处理的工具类,ImageLoader,主要用来通过url解析图片,处理图片的大小,以文件的形式缓存图片。</p><pre class="brush:java;">public class ImageLoader {
         
        MemoryCache memoryCache=new MemoryCache();
        FileCache fileCache;
        private Map<imageview, string=""> imageViews=Collections.synchronizedMap(new WeakHashMap<imageview, string="">());
        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<required_size a="(Activity)photoToLoad.imageView.getContext();" activity="" bd="new" bitmap="b;photoToLoad=p;}" bitmapdisplayer="" bitmapfactory.options="" bmp="getBitmap(photoToLoad.url);" boolean="" catch="" decode="" display="" else="" filenotfoundexception="" for="" height_tmp="" imageview="" implements="" in="" insamplesize="" new="" o2="new" o2.insamplesize="scale;" override="" photosloader="" phototoload="" pre="" private="" public="" queue="" return="" runnable="" string="" tag="=null" task="" the="" this.phototoload="photoToLoad;" thread="" to="" ui="" url="u;" used="" void="" width_tmp="" with=""><p> </p><p> </p></required_size></imageview,></imageview,></pre>
    </array.length();i&#43;&#43;)></string,>
     

    推推族,免费得门票,游景区:www.tuituizu.com

    结伴旅游,一个免费的交友网站:www.jieberu.com

  • 相关阅读:
    测试office2010发布cnblog文章
    【转载.SQL注入原理】SQL注入漏洞全接触入门篇
    【转载.SQL注入原理】SQL Server应用程序中的高级SQL注入
    【转载.SQL注入防范】SQL注入技术和跨站脚本攻击的检测
    获取目录对话框
    关于CFormView的滚动条和凹凸解决
    转——windows live writer向cnblog发布文章设置
    【转载.SQL注入原理】SQL注入法攻击一日通
    windows live wirter向cnblog发布日志测试
    android模拟器怎么与PC通信
  • 原文地址:https://www.cnblogs.com/rabbit-bunny/p/4217682.html
Copyright © 2020-2023  润新知