volley学习笔记(四):Android利用Volley异步加载数据(JSON和图片)完整示例

Android网络框架-Volley() 使用getpost方法发送json请求 这一篇文章我们介绍如何使用Volley发起请求,前提是我们得建立一个RequestQueue。在Android网络框架-Volley() RequestQueue源码分析以及建立一个RequestQueue 中我们介绍了如何创建一个单例的RequestQueue,如果不会的朋友可以看一下。 1.发出JSON请求 Volley提供了解析JSON数据 阅读详情

MainActivity如下:

package cc.testvolley; 

import org.json.JSONObject; 
import android.app.Activity; 
import android.app.ProgressDialog; 
import android.graphics.Bitmap; 
import android.os.Bundle; 
import android.support.v4.util.LruCache; 
import android.widget.ImageView; 
import com.android.volley.Request; 
import com.android.volley.RequestQueue; 
import com.android.volley.Response; 
import com.android.volley.VolleyError; 
import com.android.volley.toolbox.ImageLoader; 
import com.android.volley.toolbox.ImageLoader.ImageCache; 
import com.android.volley.toolbox.ImageLoader.ImageListener; 
import com.android.volley.toolbox.JsonObjectRequest; 
import com.android.volley.toolbox.NetworkImageView; 
import com.android.volley.toolbox.Volley; 

/**
 * Demo描述: 
 * 1 利用Volley获取JSON数据
 * 2 利用Volley异步加载图片
 * 1 利用NetworkImageView加载网路图片
 * 
 * 参考资料:
 * 1 http://blog.csdn.net/t12x3456/article/details/9221611
 * 2 http://blog.csdn.net/xyz_lmn/article/details/12063561
 * 3 http://blog.csdn.net/lfdfhl/article/details/12221875
 *   Thank you very much
 */ 
public class MainActivity extends Activity { 
    private ImageView mImageView; 
    private NetworkImageView mNetworkImageView; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
        init(); 
    } 

    private void init(){ 
        mImageView=(ImageView) findViewById(R.id.imageView); 
        mNetworkImageView=(NetworkImageView)findViewById(R.id.networkImageView); 
        getJSONByVolley(); 
        loadImageByVolley(); 
        showImageByNetworkImageView(); 
    } 

    /**
     * 利用Volley获取JSON数据
     */ 
    private void getJSONByVolley() { 
        RequestQueue requestQueue = Volley.newRequestQueue(this); 
        String JSONDataUrl = "http://pipes.yahooapis.com/pipes/pipe.run?_id=giWz8Vc33BG6rQEQo_NLYQ&_render=json"; 
        final ProgressDialog progressDialog = ProgressDialog.show(this, "This is title", "...Loading..."); 

        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest( 
                Request.Method.GET,  
                JSONDataUrl,  
                null, 
                new Response.Listener<JSONObject>() { 
                    @Override 
                    public void onResponse(JSONObject response) { 
                        System.out.println("response="+response); 
                        if (progressDialog.isShowing()&&progressDialog!=null) { 
                            progressDialog.dismiss(); 
                        } 
                    } 
                },  
                new Response.ErrorListener() { 
                    @Override 
                    public void onErrorResponse(VolleyError arg0) { 
                           System.out.println("sorry,Error"); 
                    } 
                }); 
        requestQueue.add(jsonObjectRequest); 
    } 


    /**
     * 利用Volley异步加载图片
     * 
     * 注意方法参数:
     * getImageListener(ImageView view, int defaultImageResId, int errorImageResId)
     * 第一个参数:显示图片的ImageView
     * 第二个参数:默认显示的图片资源
     * 第三个参数:加载错误时显示的图片资源
     */ 
    private void loadImageByVolley(){ 
        String imageUrl="http://avatar.csdn.net/6/6/D/1_lfdfhl.jpg"; 
        RequestQueue requestQueue = Volley.newRequestQueue(this); 
        final LruCache<String, Bitmap> lruCache = new LruCache<String, Bitmap>(20); 
        ImageCache imageCache = new ImageCache() { 
            @Override 
            public void putBitmap(String key, Bitmap value) { 
                lruCache.put(key, value); 
            } 

            @Override 
            public Bitmap getBitmap(String key) { 
                return lruCache.get(key); 
            } 
        }; 
        ImageLoader imageLoader = new ImageLoader(requestQueue, imageCache); 
        ImageListener listener = ImageLoader.getImageListener(mImageView, R.drawable.ic_launcher,R.drawable.ic_launcher); 
        imageLoader.get(imageUrl, listener); 
    } 

    /**
     * 利用NetworkImageView显示网络图片
     */ 
    private void showImageByNetworkImageView(){ 
        String imageUrl="http://avatar.csdn.net/6/6/D/1_lfdfhl.jpg"; 
        RequestQueue requestQueue = Volley.newRequestQueue(this); 
        final LruCache<String, Bitmap> lruCache = new LruCache<String, Bitmap>(20); 
        ImageCache imageCache = new ImageCache() { 
            @Override 
            public void putBitmap(String key, Bitmap value) { 
                lruCache.put(key, value); 
            } 

            @Override 
            public Bitmap getBitmap(String key) { 
                return lruCache.get(key); 
            } 
        }; 
        ImageLoader imageLoader = new ImageLoader(requestQueue, imageCache); 
        mNetworkImageView.setTag("url"); 
        mNetworkImageView.setImageUrl(imageUrl,imageLoader); 
    } 

}

main.xml如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
     > 

    <com.android.volley.toolbox.NetworkImageView 
        android:id="@+id/networkImageView" 
        android:layout_width="120dip" 
        android:layout_height="120dip" 
        android:layout_centerHorizontal="true" 
        android:layout_marginTop="30dip" 
    /> 

     <ImageView 
        android:id="@+id/imageView" 
        android:layout_width="120dip" 
        android:layout_height="120dip" 
        android:layout_centerInParent="true" 
    /> 

</RelativeLayout>
android利用volley+Gson POST json请求来接收jsonObject并解析json数据 这里安利一个介绍volley几种常用方法的blog:http://blog.csdn.net/fenghai22/article/details/44061307 进入正题,当request header中content-type = application/json时,说明需要post一个json才能获取response。volly提供了一个方法: public JsonObjectRe 阅读详情

相关推荐

解决 HorizontalScrollView ViewPager 的滑动冲突

在上篇 仿qq5.0侧滑实现后 我在这个布局里加了一个空间 ViewPager 发现 ,主界面可以侧滑,但viewPager不能手动滑动。发现是侧滑事件viewPager的滑动事件有冲突:解决办法就是重写ViewPager控件:这个是侧滑的控件package com.itau.yamadv.community.view;import android.content.Context; import

滴水穿石,磨杵成针,厚积薄发;明天你好 1542

Android利用Volley异步加载数据(JSON图片)完整示例

MainActivity如下:package cc.testvolley; import org.json.JSONObject; import android.app.Activity; import android.app.ProgressDialog; import android.graphics.Bitmap; import android.os.Bundle; import a

来啊 快活啊 1319

1788445834680.apk

1788445834680.apk

Android 网络通信框架Volley简介以及获取JSON对象图片加载例子

1. 什么是Volley 在这之前,我们在程序中需要网络通信的时候,大体使用的东西莫过于AsyncTaskLoader,HttpURLConnection,AsyncTask,HTTPClient(Apache)等,今年的Google I/O 2013上,Volley发布了。VolleyAndroid平台上的网络通信库,能使网络通信更快,更简单,更健壮。 这是Volley名称的由来:

冉冉同学的专栏 1752

androidjson文件异步加载图片,Android利用Volley异步加载数据(JSON图片)完整示例...

MainActivity如下:package androidchina.net.testvolley;import org.json.JSONObject;import android.app.Activity;import android.app.ProgressDialog;import android.graphics.Bitmap;import android.os.Bundle;impo...

weixin_39933508的博客 165

Android利用Volley异步加载(JSON图片)完整示例

androidjson解析部分都在包org.json下,主要有以下几个类:  JSONObject:可以看作是一个json对象,这是系统中有关JSON定义的基本单元,其包含一对儿(Key/Value)数值。它对外部(External:   应用toString()方法输出的数值)调用的响应体现为一个标准的字符串(例如:{"JSON": "Hello, World"},最外被大括号包

hao_qi 738

Android中关于Volley的使用(二)加载Json数据

前面一篇关于Volley的文章中,我们学习了如何利用ImageRequest去网络中加载图片,那么今天我们就来学习一下如何利用volley去网络中加载Json格式数据,并将其展示在一个ListView上。 1)数据源: private static final String WEATHER_LINK = "http://www.weather.com.cn/data/sk/101280101.html"; 这是由中国天气网提供的关于某个城市的天气预告的Json数据,大家直接点击链接进去 http://ww

持剑 8858

Netroid学习笔记(二):请求的使用

使用JsonObjectRequest获取一个json对象:String url = "http://server.domain/json_object.do"; JsonObjectRequest request = new JsonObjectRequest(url, null, new Listener<JSONObject>() { @Override public void

滴水穿石,磨杵成针,厚积薄发;明天你好 1099

Netroid学习笔记(一):初识Netroid

简介: Netroid是一个基于Volley实现的Android Http库。提供执行网络请求、缓存返回结果、批量图片加载、大文件断点下载的常见Http交互功能。致力于避免每个项目重复开发基础Http功能,实现显著地缩短开发周期的愿景。 实现原理: Netroid自启动后创建由开发者指定的线程数目,每个线程由 BlockingQueue 进行阻塞。当有新的请求进入队列时,其中一个线程将被唤醒并

滴水穿石,磨杵成针,厚积薄发;明天你好 657

volley跟ssh服务结合使用

本人以前做了几年j2ee的开发,最近突然接手一个android项目 服务端用的ssh2框架,android客户端用的volley通信交互框架,下面简单介绍下ssh2怎么给通过volleyandroid端提供json数据。一、ssh2端代码 struct配置文件:<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//

滴水穿石,磨杵成针,厚积薄发;明天你好 542

双立柱油脂加注机.rar

双立柱油脂加注机.rar

食品包装礼品包装设备.rar

食品包装礼品包装设备.rar

全自动iphone贴膜机3.rar

全自动iphone贴膜机3.rar

运动员运动表现纵向数据

纵向运动员运动表现数据集包含250名运动员10000条训练会话重复观测记录,涵盖篮球、排球、足球、跑步、游泳无损伤跑步者六个运动类别。包括速度、加速度、反应时间、准确性、耐力、力量、敏捷性等表现变量,以及训练负荷、疲劳、恢复训练成效指标。用于研究实验分析。

上一篇: volley跟ssh服务结合使用
下一篇: volley学习笔记(五):Android Volley框架的几种post提交请求方式
南神
博客等级 码龄13年 8粉丝 27原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值