volley获取JSON数据+异步加载图片+NetworkImageView加载网路图片(一)

转载  http://www.open-open.com/lib/view/open1380637096353.html


项目地址 https://github.com/smanikandan14/Volley-demo
 (1)  JSON,图像等的异步下载;
 (2)  网络请求的排序(scheduling)
 (3)  网络请求的优先级处理
 (4)  缓存
 (5)  多级别取消请求
 (6)  和Activity和生命周期的联动(Activity结束时同时取消所有网络请求)



代码部分

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.youkuaiyun.com/t12x3456/article/details/9221611 
 * 2 http://blog.youkuaiyun.com/xyz_lmn/article/details/12063561 
 * 3 http://blog.youkuaiyun.com/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.youkuaiyun.com/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.youkuaiyun.com/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);  
    }  
  
}  
布局文件

<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>  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值