请选择 进入手机版 | 继续访问电脑版
阳光沙滩博客邀请好友最新视频下载
+发表新主题
轩辕天骄 发布于2016-5-14 02:45 1066 次浏览 1 位用户参与讨论
跳转到指定楼层
本帖的地址:https://bbs.sunofbeaches.com/thread-4584-1-1.html
版权声明:本文为作者所有,未经作者允许不得转载--->温馨提示:请加上原文地址!
在布局之前呢,我们要添加依赖嘛,如果你用AS的话,直接添加依赖即可,就可以使用Android-volley了

  1. compile <span style="color:#6a8759;">'com.mcxiaoke.volley:library:1.0.19'</span>
复制代码


先是布局文件:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout
  3.     xmlns:android="http://schemas.android.com/apk/res/android"
  4.     xmlns:tools="http://schemas.android.com/tools"
  5.     android:layout_width="match_parent"
  6.     android:layout_height="match_parent"
  7.     android:gravity="center_horizontal"
  8.     android:orientation="vertical"
  9.     tools:context=".MainActivity">

  10.     <com.android.volley.toolbox.NetworkImageView
  11.         android:layout_width="match_parent"
  12.         android:id="@+id/net_work_image_view"
  13.         android:layout_height="match_parent"/>

  14. </LinearLayout>
复制代码
主的Activity,这里就是这個NetWorkImageView的使用过程啦,我们要准备一個缓存,这個需要自己写一下!
  1. package com.sunofbeaches.volleydemo;

  2. import android.os.Bundle;
  3. import android.support.v7.app.AppCompatActivity;

  4. import com.android.volley.toolbox.ImageLoader;
  5. import com.android.volley.toolbox.NetworkImageView;
  6. import com.android.volley.toolbox.Volley;

  7. public class MainActivity extends AppCompatActivity {

  8.     private NetworkImageView mNetworkImageView;

  9.     @Override
  10.     protected void onCreate(Bundle savedInstanceState) {
  11.         super.onCreate(savedInstanceState);
  12.         setContentView(R.layout.activity_main);
  13.         initNetWorkImageView();
  14.     }

  15.     private void initNetWorkImageView() {

  16.         String url = "http://bbs.sunofbeaches.com/data/attachment/forum/201605/12/115244sy5qxfmxuguyf8bs.png";

  17.         mNetworkImageView = (NetworkImageView) this.findViewById(R.id.net_work_image_view);
  18.         //设置沒有加载的默认图片
  19.         mNetworkImageView.setDefaultImageResId(R.mipmap.load_error);

  20.         //创建一個ImageCache
  21.         MyImageCache imageCache = new MyImageCache();

  22.         //ImageLoader
  23.         ImageLoader imageLoader = new ImageLoader(Volley.newRequestQueue(MainActivity.this),imageCache);

  24.         mNetworkImageView.setImageUrl(url,imageLoader);
  25.     }
  26. }
复制代码
缓存的LruCache类
  1. package com.sunofbeaches.volleydemo;

  2. import android.graphics.Bitmap;
  3. import android.util.LruCache;

  4. import com.android.volley.toolbox.ImageLoader;


  5. public class MyImageCache implements ImageLoader.ImageCache {


  6.     private LruCache<String, Bitmap> mLruCache;

  7.     //定义缓存的大小
  8.     private static final int maxSize = 4 * 1024 * 1024;//4M

  9.     public MyImageCache() {

  10.         //创建这個缓存集合
  11.         mLruCache = new LruCache<String, Bitmap>(maxSize) {
  12.             @Override
  13.             protected int sizeOf(String key, Bitmap value) {
  14.                 return value.getByteCount();
  15.             }
  16.         };

  17.     }


  18.     @Override
  19.     public Bitmap getBitmap(String url) {

  20.         Bitmap bitmap = mLruCache.get(url);
  21.         if (bitmap != null) {
  22.             return bitmap;

  23.         } else {
  24.             return null;
  25.         }
  26.     }

  27.     @Override
  28.     public void putBitmap(String url, Bitmap bitmap) {
  29.         //在这里存数据
  30.         mLruCache.put(url, bitmap);
  31.     }
  32. }
复制代码
那么请求之后的效果就这样子啦:
2016-05-13_140622.png

如果这個用于展示图片的 话挺好的,比如在这個ListView的话,不会错位,因为它缓存在这個内存里嘛。
当然,如果缓存在了Disk里的 话,也有可能错位的。这里要解决啦,因为错位的原因就是这個复用。


好啦,到这里的话,相信你已经会怎么使用它啦!你也可以动手写写哈,加油吧,你也可以的!








转载请说明出处,本文地址:https://bbs.sunofbeaches.com/thread-4584-1-1.html

帖子的最近访客

【大家可以通过搜索让相关资源!】【有疑问可以到提问模块提问哦!】【如果我去有资源也希望可以分享】【谢谢大家!by bbs.sunofbeaches.com】

已有1人评论

天空蓝dhm 发表于 2016-5-29 12:38:50
挺好的的吗妈妈妈妈吗

本版积分规则

关闭

站长推荐 上一条 /2 下一条

Copyright © 2001-2013 Comsenz Inc.   All Rights Reserved.

Powered by Discuz! X3.2 ( 粤ICP备14093694号 )

快速
回复
返回
列表
返回
顶部