MainActivity例如以下:

package cc.y;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.os.Bundle;
import android.util.LruCache;
import android.widget.ImageView;
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.ImageRequest;
import com.android.volley.toolbox.NetworkImageView;
import com.android.volley.toolbox.Volley;
/**
* Demo描写叙述:
* 去年一个项目中简单的使用了Volley,參见:
* http://blog.csdn.net/lfdfhl/article/details/12223345
* 近期guolin写了几篇文章具体介绍Volley,所以在此比較系统地学习一下.
* 在本演示样例中,主要包含:
* 1 利用ImageRequest为ImageView载入网络图片
* 2 利用ImageLoader为ImageView载入网络图片
* 3 利用NetworkImageView为ImageView载入网络图片 *
* 注意事项:
* 1 引入jar包volley.jar
* 2 网络权限<uses-permission android:name="android.permission.INTERNET"/>
* 3 Volley源代码分析,请參见:
* http://blog.csdn.net/guolin_blog/article/details/17656437
* 4 自己定义的XMLRequest和GsonRequest,请參见:
* http://blog.csdn.net/guolin_blog/article/details/17612763
*
* 学习资料:
* http://blog.csdn.net/guolin_blog/article/details/17482165
* Thank you very much
*
*/
public class MainActivity extends Activity {
private Context mContext;
private RequestQueue mRequestQueue;
private String mUrl="http://avatar.csdn.net/6/6/D/1_lfdfhl.jpg";
private ImageView mImageView;
private ImageRequest mImageRequest;
private ImageLoader mImageLoader;
private ImageListener mImageListener;
private NetworkImageView mNetworkImageView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();
//volley_ImageRequest();
//volley_ImageLoader();
volley_NetworkImageView();
} private void init(){
mContext=this;
mImageView=(ImageView) findViewById(R.id.imageView);
mNetworkImageView=(NetworkImageView) findViewById(R.id.networkImageView);
} //利用ImageRequest为ImageView载入网络图片
private void volley_ImageRequest() {
mRequestQueue = Volley.newRequestQueue(mContext);
mImageRequest = new ImageRequest(
mUrl,
new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap response) {
mImageView.setImageBitmap(response);
}},
0,
0,
Config.ARGB_8888,
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
System.out.println("获取图片失败,所以载入一个默认图片");
mImageView.setImageDrawable(mContext.getResources().getDrawable(R.drawable.ic_launcher));
}
});
mRequestQueue.add(mImageRequest);
} //利用ImageLoader为ImageView载入网络图片
private void volley_ImageLoader(){
mRequestQueue = Volley.newRequestQueue(mContext);
mImageLoader=new ImageLoader(mRequestQueue, new ImageCacheImpl());
mImageListener=ImageLoader.getImageListener(mImageView, R.drawable.ic_launcher, R.drawable.ic_launcher);
mImageLoader.get(mUrl, mImageListener);
//mImageLoader.get(mUrl, mImageListener,250,250);
} //利用LruCache实现图片缓存机制
//请參见:
//http://blog.csdn.net/lfdfhl/article/details/18350601
private class ImageCacheImpl implements ImageCache {
private LruCache<String, Bitmap> mLruCache;
public ImageCacheImpl() {
int maxSize = 15 * 1024 * 1024;
mLruCache = new LruCache<String, Bitmap>(maxSize) {
@Override
protected int sizeOf(String key, Bitmap bitmap) {
return bitmap.getRowBytes() * bitmap.getHeight();
}
};
} @Override
public Bitmap getBitmap(String url) {
return mLruCache.get(url);
}
@Override
public void putBitmap(String url, Bitmap bitmap) {
mLruCache.put(url, bitmap);
}
} //利用NetworkImageView为ImageView载入网络图片
private void volley_NetworkImageView(){
mRequestQueue = Volley.newRequestQueue(mContext);
mImageLoader=new ImageLoader(mRequestQueue, new ImageCacheImpl());
mNetworkImageView.setDefaultImageResId(R.drawable.ic_launcher);
mNetworkImageView.setErrorImageResId(R.drawable.ic_launcher);
mNetworkImageView.setImageUrl(mUrl, mImageLoader);
} }

main.xml例如以下:

<?xml version="1.0" encoding="utf-8"?

>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" > <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="学习Volley(二)"
android:layout_centerHorizontal="true"
/> <ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="50dip"
/> <com.android.volley.toolbox.NetworkImageView
android:id="@+id/networkImageView"
android:layout_width="120dip"
android:layout_height="120dip"
android:layout_centerHorizontal="true"
android:layout_marginTop="150dip"
/> </RelativeLayout>

Android利用Volley异步载入数据完整具体演示样例(二)的更多相关文章

  1. CountDownTimer完整具体演示样例

    MainActivity例如以下: package cc.cv; import android.os.Bundle; import android.os.CountDownTimer; import ...

  2. Android清理设备内存具体完整演示样例(二)

    版权声明: https://blog.csdn.net/lfdfhl/article/details/27672913 MainActivity例如以下: package cc.c; import j ...

  3. Android 编程之第三方开发 MaoZhuaWeiBo微博开发演示样例-1

    在大学期间我做过非常多类似这种APP.这个是我们小组之前做的,我后期增加非常多新元素.完好了这个应用,由于为了加强 专业技术嘛.也是常常熬夜写些小东西,嘿嘿.只是还算不错.起码技术长进了不少嘛,还是非 ...

  4. Android - 使用Volley请求网络数据

    Android - 使用Volley请求网络数据 Android L : Android Studio 14 个人使用volley的小记,简述使用方法,不涉及volley源码 准备工作 导入Volle ...

  5. android中listview分页载入数据

    前段时间做的新浪微博项目一直想实现listview分页载入数据,今天最终实现了,哈哈!感觉挺好的,今天又写了个demo给大家分享下. 首先说下listview的优化方案,这也是面试中常考的题目.优化方 ...

  6. Android利用Fiddler进行网络数据抓包

    最新最准确内容建议直接访问原文:Android利用Fiddler进行网络数据抓包 主要介绍Android及IPhone手机上如何进行网络数据抓包,比如我们想抓某个应用(微博.微信.墨迹天气)的网络通信 ...

  7. Android利用Fiddler进行网络数据抓包,手机抓包工具汇总

    Fiddler抓包工具 Fiddler抓包工具很好用的,它可以干嘛用呢,举个简单例子,当你浏览网页时,网页中有段视频非常好,但网站又不提供下载,用迅雷下载你又找不到下载地址,这个时候,Fiddler抓 ...

  8. SpringMVC+Jquery -页面异步载入数据

    背景: 做项目时涉及到页面.当我打算在controller中传一个list到页面,然后通过<c:foreach>循环遍历出来时,同事说:你这样每次都要刷新.这都是几百年前使用的技术了.你用 ...

  9. Android利用Fiddler进行网络数据抓包,手机抓包工具汇总,使用mono运行filddler

    Fiddler抓包工具 Fiddler抓包工具很好用的,它可以干嘛用呢,举个简单例子,当你浏览网页时,网页中有段视频非常好,但网站又不提供下载,用迅雷下载你又找不到下载地址,这个时候,Fiddler抓 ...

随机推荐

  1. JavaScript(十三)面向对象

    面向对象 面向对象的过程 通过new 构造函数 生成的对象来执行, 类似于事件的执行  this指向函数,然后再把这个函数赋值给一个实例  所以在函数内的this  就指到了实例上 function ...

  2. Java&Xml教程(八)使用JDOM将Java对象转换为XML

    在前面的教程中我们学习了如何使用JDOM解析和修改XML文件内容,本节介绍如何将Java对象转换为XML数据并生成文件. JDOM的Document类提供了便捷的方法创建元素和属性,XMLOutput ...

  3. Linux学习笔记之Linux命令

    1. blkid  查看当前系统中所有已挂载文件系统的类型

  4. 【C++】智能指针简述(三):scoped_ptr

    在介绍scoped_ptr之前,我们先回顾一下前两篇文章的内容. 首先,智能指针采用RAII机制,通过对象来管理指针,构造对象时,完成资源的初始化;析构对象时,对资源进行清理及汕尾. auto_ptr ...

  5. Maven之pom.xml详释

    什么是pom? POM(Project Object Model):全称项目对象模型,它是Maven项目中的文件,使用XML表示,名称叫做pom.xml.在Maven项目中,必须包含pom.xml文件 ...

  6. CNN:测试一下YoloV3

    项目地址:https://pjreddie.com/darknet/yolo/ mAP提升了不少,在VS上试一把 V3 的权值: https://pjreddie.com/media/files/yo ...

  7. 【sqli-labs】 less61 GET -Challenge -Double Query -5 queries allowed -Variation4 (GET型 挑战 双查询 只允许5次查询 变化4)

    http://192.168.136.128/sqli-labs-master/Less-61/?id=1' 单引号双括号闭合 192.168.136.128/sqli-labs-master/Les ...

  8. How a stack frame works 栈帧的要素与构建步骤

    http://en.citizendium.org/wiki/Stack_frame To use a stack frame, a thread keeps two pointers, often ...

  9. 梦想CAD控件COM接口搜索图面上的文字

    点击此处下载演示实例 主要用到函数说明: _DMxDrawX::NewSelectionSet 实例化一个构造选择集进行过滤,该类封装了选择集及其处理函数. _DMxDrawX::NewResbuf ...

  10. 禁止foreach循环使用remove/add----快速失败

    阿里巴巴开发手册中有一条: 7[强制]不要在 foreach 循环里进行元素的 remove / add 操作. remove 元素请使用 Iterator 方式,如果并发操作,需要对 Iterato ...