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. PHP无符号右移与旋转右移

    # PHP 无符号右移 仅用于int形, PHP 的int为32位 # // 右移旋转 function rightRoate($int,$n){ $min = intval(PHP_INT_MAX ...

  2. Vue.js——router-link阻止click事件

    router-link 只能单纯做路由跳转 https://segmentfault.com/q/1010000007896386

  3. 329.-io流(字符-练习-复制文本文件二)

    //每次读取的字节长度,一般都是1024的倍数 private static final int BUF_SIZE = 1024; public static void main(String[] a ...

  4. 音视频】5.ffmpeg命令分类与使用

    GT其实平时也有一些处理音视频的个人或者亲人需求,熟练使用ffmpeg之后也不要借助图示化软件,一个命令基本可以搞定 G: 熟练使用ffmpeg命令!T :不要死记硬背,看一遍,自己找下规律,敲一遍, ...

  5. day18-常用模块III (numpy、pandas、matplotlib)

    目录 numpy模块 创建矩阵 获取矩阵的行列数 切割矩阵 矩阵元素替换 矩阵的合并 通过函数创建矩阵 矩阵的运算 矩阵的点乘与转置 矩阵的逆 矩阵的其他操作 numpy.random生成随机数 pa ...

  6. 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。

    package algorithms; /* 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null. public class ListNode { int val; ListNo ...

  7. CPU总线

    总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束.按照计算机所传输的信息种类,计算机的总线可以划分为数据总线.地址总线和控制总线,分别用来传输数据.数据地址和控制 ...

  8. 00JAVA EE

    JAVA EE 三层架构 我们的开发架构一般都是基于两种形式,一种是C/S架构,也就是客户端/服务器,另一种是B/S架构,也就是浏览器服务器.在JavaEE开发中,几乎全都是基于B/S架构的开发.那么 ...

  9. jQuey中的return false作用是什么?

    jQuey中的return false作用是什么?在众多的语句中都有return false的使用,当然对于熟悉它的开发者来说,当然是知根知底,知道此语句的作用,当然也就知道在什么时候使用此语句,不过 ...

  10. Linux设置history命令显示行数以及时间

    Linux和unix上都提供了history命令,可以查询以前执行的命令历史记录但是,这个记录并不包含时间项目因此只能看到命令,但是不知道什么时间执行的如何让history记录时间呢? 解决方案 注意 ...