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

MainActivity如下:

?
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
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如下:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
< 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 >
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值