Android系列之Volley框架加载网络图片

举报
yd_273762914 发表于 2020/12/02 23:58:56 2020/12/02
【摘要】 Android开发中,加载网络服务器的图片是很常用的,当然我们可以自己写服务器接口去实现,不过要做到服务器性能 优越的话,开发起来比较麻烦点,所以本博客要介绍Volley框架进行网络图片加载的demo!Volley框架集成了 AsyncHttpClient和Universal-Image-Loader的优点,开发起来非常的方便了,而且性能也不错!     我们可以去...

Android开发中,加载网络服务器的图片是很常用的,当然我们可以自己写服务器接口去实现,不过要做到服务器性能

优越的话,开发起来比较麻烦点,所以本博客要介绍Volley框架进行网络图片加载的demo!Volley框架集成了

AsyncHttpClient和Universal-Image-Loader的优点,开发起来非常的方便了,而且性能也不错!

 

 

我们可以去下载Volley.jar,这个是我在网上找的:点击打开链接

可以去下载这个我在网上找的哦!

 

注意:这些网络请求的,首先都要开启权限,我们打开AndroidManifest.xml

然后定义一个全局变量Context context;

加入代码:

 


  
  1. <!-- 配置网络连接需要的属性 -->
  2. <uses-permission android:name="android.permission.INTERNET" />
  3. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  4. <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

 

 

 

 

 

 

 

 

 

方法一:通过ImageRequest,进行加载


  
  1. public void imageRequest(){
  2. context = this;
  3. imageView = (ImageView)findViewById(R.id.imageView1);
  4. //创建一个RequestQueue对象
  5. RequestQueue requestQueue = Volley.newRequestQueue(context);
  6. //创建ImageRequest对象
  7. ImageRequest imageRequest = new ImageRequest(
  8. "http://c.csdnimg.cn/public/favicon.ico",//url
  9. new Response.Listener<Bitmap>() {//监听器Listener
  10. @Override
  11. public void onResponse(Bitmap response) {
  12. imageView.setImageBitmap(response);
  13. }
  14. //参数3、4表示图片宽高,Bitmap.Config.ARGB_8888表示图片每个像素占据4个字节大小
  15. }, 0, 0, Config.ARGB_8888, new Response.ErrorListener() {//图片加载请求失败的回调Listener
  16. @Override
  17. public void onErrorResponse(VolleyError error) {
  18. imageView.setImageResource(R.drawable.ic_normal_pic);
  19. }
  20. });
  21. //将ImageRequest加载到Queue
  22. requestQueue.add(imageRequest);
  23. }

 

方法二:通过ImageLoader,进行加载

介绍一下imageLoader,imageLoader不是继承ImageRequest,不是内部实现还是通过ImageRequest的,

ImageLoader来实现的好处是可以过滤重复的url,这样就提高了性能


  
  1. public void imageLoad(){
  2. context = this;
  3. imageView = (ImageView)findViewById(R.id.imageView1);
  4. //创建一个RequestQueue对象
  5. RequestQueue requestQueue = Volley.newRequestQueue(context);
  6. //创建一个ImageLoader
  7. ImageLoader imageLoader = new ImageLoader(requestQueue, new ImageCache() {
  8. @Override
  9. public void putBitmap(String url, Bitmap bitmap) {
  10. }
  11. @Override
  12. public Bitmap getBitmap(String url) {
  13. return null;
  14. }
  15. });
  16. //ImageListener
  17. ImageListener listener = ImageLoader.getImageListener(imageView,
  18. R.drawable.ic_normal_pic, R.drawable.ic_normal_pic);
  19. //url、listener、maxWidth、maxHeight
  20. imageLoader.get("http://c.csdnimg.cn/public/favicon.ico", listener, 200, 200);
  21. }

 

方法三:通过NetworkImageLoader

继承自ImageView的,具备ImageView控件的所有功能,并且在原生的基础之上加入了加载网络图片的功能,也就是

Volley框架提供的View

 


  
  1. public void networkImageLoad(){
  2. context = this;
  3. //创建一个RequestQueue对象
  4. RequestQueue requestQueue = Volley.newRequestQueue(context);
  5. //创建一个ImageLoader
  6. ImageLoader imageLoader = new ImageLoader(requestQueue, new ImageCache() {
  7. @Override
  8. public void putBitmap(String url, Bitmap bitmap) {
  9. }
  10. @Override
  11. public Bitmap getBitmap(String url) {
  12. return null;
  13. }
  14. });
  15. //NetworkImageView
  16. networkImageView = (NetworkImageView) findViewById(R.id.network_image_view);
  17. networkImageView.setDefaultImageResId(R.drawable.ic_normal_pic);
  18. networkImageView.setErrorImageResId(R.drawable.ic_normal_pic);
  19. //设置url和ImageLoader对象
  20. networkImageView.setImageUrl("http://c.csdnimg.cn/public/favicon.ico",
  21. imageLoader);
  22. }

 

 

 

 

 

 

 

 

 

Layout:


  
  1. <com.android.volley.toolbox.NetworkImageView
  2. android:id="@+id/network_image_view"
  3. android:layout_width="100dp"
  4. android:layout_height="100dp"
  5. android:layout_gravity="center_horizontal"
  6. />

 

 

Demo代码下载:点击打开链接

 

 





文章来源: smilenicky.blog.csdn.net,作者:smileNicky,版权归原作者所有,如需转载,请联系作者。

原文链接:smilenicky.blog.csdn.net/article/details/50922884

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。