MainActivity例如以下:

  1. package cc.y;
  2.  
  3. import android.app.Activity;
  4. import android.content.Context;
  5. import android.graphics.Bitmap;
  6. import android.graphics.Bitmap.Config;
  7. import android.os.Bundle;
  8. import android.util.LruCache;
  9. import android.widget.ImageView;
  10. import com.android.volley.RequestQueue;
  11. import com.android.volley.Response;
  12. import com.android.volley.VolleyError;
  13. import com.android.volley.toolbox.ImageLoader;
  14. import com.android.volley.toolbox.ImageLoader.ImageCache;
  15. import com.android.volley.toolbox.ImageLoader.ImageListener;
  16. import com.android.volley.toolbox.ImageRequest;
  17. import com.android.volley.toolbox.NetworkImageView;
  18. import com.android.volley.toolbox.Volley;
  19. /**
  20. * Demo描写叙述:
  21. * 去年一个项目中简单的使用了Volley,參见:
  22. * http://blog.csdn.net/lfdfhl/article/details/12223345
  23. * 近期guolin写了几篇文章具体介绍Volley,所以在此比較系统地学习一下.
  24. * 在本演示样例中,主要包含:
  25. * 1 利用ImageRequest为ImageView载入网络图片
  26. * 2 利用ImageLoader为ImageView载入网络图片
  27. * 3 利用NetworkImageView为ImageView载入网络图片
  28.  
  29. *
  30. * 注意事项:
  31. * 1 引入jar包volley.jar
  32. * 2 网络权限<uses-permission android:name="android.permission.INTERNET"/>
  33. * 3 Volley源代码分析,请參见:
  34. * http://blog.csdn.net/guolin_blog/article/details/17656437
  35. * 4 自己定义的XMLRequest和GsonRequest,请參见:
  36. * http://blog.csdn.net/guolin_blog/article/details/17612763
  37. *
  38. * 学习资料:
  39. * http://blog.csdn.net/guolin_blog/article/details/17482165
  40. * Thank you very much
  41. *
  42. */
  43. public class MainActivity extends Activity {
  44. private Context mContext;
  45. private RequestQueue mRequestQueue;
  46. private String mUrl="http://avatar.csdn.net/6/6/D/1_lfdfhl.jpg";
  47. private ImageView mImageView;
  48. private ImageRequest mImageRequest;
  49. private ImageLoader mImageLoader;
  50. private ImageListener mImageListener;
  51. private NetworkImageView mNetworkImageView;
  52. @Override
  53. public void onCreate(Bundle savedInstanceState) {
  54. super.onCreate(savedInstanceState);
  55. setContentView(R.layout.main);
  56. init();
  57. //volley_ImageRequest();
  58. //volley_ImageLoader();
  59. volley_NetworkImageView();
  60. }
  61.  
  62. private void init(){
  63. mContext=this;
  64. mImageView=(ImageView) findViewById(R.id.imageView);
  65. mNetworkImageView=(NetworkImageView) findViewById(R.id.networkImageView);
  66. }
  67.  
  68. //利用ImageRequest为ImageView载入网络图片
  69. private void volley_ImageRequest() {
  70. mRequestQueue = Volley.newRequestQueue(mContext);
  71. mImageRequest = new ImageRequest(
  72. mUrl,
  73. new Response.Listener<Bitmap>() {
  74. @Override
  75. public void onResponse(Bitmap response) {
  76. mImageView.setImageBitmap(response);
  77. }},
  78. 0,
  79. 0,
  80. Config.ARGB_8888,
  81. new Response.ErrorListener() {
  82. @Override
  83. public void onErrorResponse(VolleyError error) {
  84. System.out.println("获取图片失败,所以载入一个默认图片");
  85. mImageView.setImageDrawable(mContext.getResources().getDrawable(R.drawable.ic_launcher));
  86. }
  87. });
  88. mRequestQueue.add(mImageRequest);
  89. }
  90.  
  91. //利用ImageLoader为ImageView载入网络图片
  92. private void volley_ImageLoader(){
  93. mRequestQueue = Volley.newRequestQueue(mContext);
  94. mImageLoader=new ImageLoader(mRequestQueue, new ImageCacheImpl());
  95. mImageListener=ImageLoader.getImageListener(mImageView, R.drawable.ic_launcher, R.drawable.ic_launcher);
  96. mImageLoader.get(mUrl, mImageListener);
  97. //mImageLoader.get(mUrl, mImageListener,250,250);
  98. }
  99.  
  100. //利用LruCache实现图片缓存机制
  101. //请參见:
  102. //http://blog.csdn.net/lfdfhl/article/details/18350601
  103. private class ImageCacheImpl implements ImageCache {
  104. private LruCache<String, Bitmap> mLruCache;
  105. public ImageCacheImpl() {
  106. int maxSize = 15 * 1024 * 1024;
  107. mLruCache = new LruCache<String, Bitmap>(maxSize) {
  108. @Override
  109. protected int sizeOf(String key, Bitmap bitmap) {
  110. return bitmap.getRowBytes() * bitmap.getHeight();
  111. }
  112. };
  113. }
  114.  
  115. @Override
  116. public Bitmap getBitmap(String url) {
  117. return mLruCache.get(url);
  118. }
  119. @Override
  120. public void putBitmap(String url, Bitmap bitmap) {
  121. mLruCache.put(url, bitmap);
  122. }
  123. }
  124.  
  125. //利用NetworkImageView为ImageView载入网络图片
  126. private void volley_NetworkImageView(){
  127. mRequestQueue = Volley.newRequestQueue(mContext);
  128. mImageLoader=new ImageLoader(mRequestQueue, new ImageCacheImpl());
  129. mNetworkImageView.setDefaultImageResId(R.drawable.ic_launcher);
  130. mNetworkImageView.setErrorImageResId(R.drawable.ic_launcher);
  131. mNetworkImageView.setImageUrl(mUrl, mImageLoader);
  132. }
  133.  
  134. }

main.xml例如以下:

  1. <?xml version="1.0" encoding="utf-8"?
  2.  
  3. >
  4. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  5. android:layout_width="fill_parent"
  6. android:layout_height="fill_parent"
  7. android:orientation="vertical" >
  8.  
  9. <TextView
  10. android:layout_width="wrap_content"
  11. android:layout_height="wrap_content"
  12. android:text="学习Volley(二)"
  13. android:layout_centerHorizontal="true"
  14. />
  15.  
  16. <ImageView
  17. android:id="@+id/imageView"
  18. android:layout_width="wrap_content"
  19. android:layout_height="wrap_content"
  20. android:layout_centerHorizontal="true"
  21. android:layout_marginTop="50dip"
  22. />
  23.  
  24. <com.android.volley.toolbox.NetworkImageView
  25. android:id="@+id/networkImageView"
  26. android:layout_width="120dip"
  27. android:layout_height="120dip"
  28. android:layout_centerHorizontal="true"
  29. android:layout_marginTop="150dip"
  30. />
  31.  
  32. </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. CF814B An express train to reveries

    思路: 模拟,枚举. 实现: #include <iostream> using namespace std; ; int a[N], b[N], cnt[N], n, x, y; int ...

  2. P2668 斗地主 贪心+深搜

    题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗地主中,牌的大小关系根据牌的数码表示如下:3<4< ...

  3. Beta冲刺提交-星期四

    这个作业属于哪个课程 软件工程 这个作业要求在哪里 <作业要求的链接> 团队名称 唱跳RAP编程 这个作业的目标 1.进行每日例会,每个成员汇报自己今天完成     的工作,PM安排明天的 ...

  4. 以POST方式推送JSON数据,并接收返回的服务器消息

    private static string GetResult(string jsonString, string type) { string url = GetUrl(type); string ...

  5. MySQL:INSERT ... UPDATE

    在 INSERT 语句末尾指定ON DUPLICATE KEY UPDATE时,如果插入的数据会导致表中的 UNIQUE 索引或 PRIMARY KEY 出现重复值,则会对导致重复的数据执行 UPDA ...

  6. Maven 项目debug调试时报Source not found.异常

    正如异常描述,那么解决方法当然是指定源码. 测试于:Maven 3.0.5, eclipse-jee-indigo-SR2-win32 异常信息: Source not found. 解决方法: 首先 ...

  7. 判断机型是否为iphoneX

    判断机型是否为iphoneX isIPhoneX() {                 var u = navigator.userAgent;                 var isIOS ...

  8. C++ Primer(第4版)-学习笔记-第3部分:类和数据抽象

    第12章 类       每个类可以没有成员,也可以定义多个成员,成员可以是数据.函数或类型别名. 成员函数必须在类内部声明,可以在类内部定义,也可以在类外部定义.如果在类内部定义,就默认是内联函数. ...

  9. ORACLE 查看当前用户信息(用户,表视图,索引,表空间,同义词,存储过程,约束条件)

    1.用户 查看当前用户的缺省表空间 SQL>select username,default_tablespace from user_users; 查看当前用户的角色 SQL>select ...

  10. X shell 6下载安装和简单使用

    ①前言:昨天已经上线了的智能家居项目出现了一个BUG,需要重新写个html发布到服务器上,由于公司大佬都在忙别的项目,时间比较紧张,这种小事就落到了我这个小喽啰身上.其实,写个html我还是可以接受的 ...