android从json文件异步加载图片,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;

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() {

@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 lruCache = new LruCache(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 lruCache = new LruCache(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如下:

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

>

android:id="@+id/networkImageView"

android:layout_width="120dip"

android:layout_height="120dip"

android:layout_centerHorizontal="true"

android:layout_marginTop="30dip"

/>

android:id="@+id/imageView"

android:layout_width="120dip"

android:layout_height="120dip"

android:layout_centerInParent="true"

/>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值