我一直在尝试使用网址在Android上设置图片超过一周。看起来它会如此简单,但我觉得我一直在追尾。我终于发现了Volley,我的希望很高,但我仍然无法让它工作。
当我注释掉setImageUrl所在的行时,应用程序不会崩溃。如果我不对它进行评论,那么该行将与其余的函数一起执行,但似乎它会崩溃。
我没有正确创建我的ImageLoader吗?
我的BitmapLruCache类是否未正确创建?
有没有更简单的方法来完成这项基本任务?
public class MainActivity extends ActionBarActivity {
private RequestQueue mrq;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout layout = (LinearLayout) findViewById(R.id.activity_main);
ImageLoader mil = new ImageLoader(this.mrq, new BitmapLruCache(this));
NetworkImageView img = new NetworkImageView(this);
img.setImageUrl("http://www.clipartbest.com/cliparts/dTr/bez/dTrbeznT9.png", mil);
layout.addView(img);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.activity_main, new PlaceholderFragment())
.commit();
}
}
这是我尝试过的两个版本的BitmapLruCache。
public class BitmapLruCache implements ImageCache {
private LruCache<String, Bitmap> mMemoryCache;
private static BitmapLruCache mInstance;
public BitmapLruCache(Context ctx) {
final int memClass = ((ActivityManager) ctx
.getSystemService(Context.ACTIVITY_SERVICE)).getMemoryClass();
// Use 1/16th of the available memory for this memory cache.
final int cacheSize = 1024 * 1024 * memClass / 16;
mMemoryCache = new LruCache<String, Bitmap>(cacheSize) {
@Override
protected int sizeOf(String key, Bitmap value) {
return value.getRowBytes() * value.getHeight();
}
};
}
public static BitmapLruCache getInstance(Context ctx) {
if (mInstance == null) {
mInstance = new BitmapLruCache(ctx);
}
return mInstance;
}
@Override
public Bitmap getBitmap(String url) {
return mMemoryCache.get(url);
}
@Override
public void putBitmap(String url, Bitmap bitmap) {
mMemoryCache.put(url, bitmap);
}
}
// public class BitmapLruCache extends LruCache<String, Bitmap> implements ImageCache {
// public static int getDefaultLruCacheSize() {
// final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
// final int cacheSize = maxMemory / 8;
//
// return cacheSize;
// }
//
// public BitmapLruCache() {
// this(getDefaultLruCacheSize());
// }
//
// public BitmapLruCache(int sizeInKiloBytes) {
// super(sizeInKiloBytes);
// }
//
// @Override
// protected int sizeOf(String key, Bitmap value) {
// return value.getRowBytes() * value.getHeight() / 1024;
// }
//
// @Override
// public Bitmap getBitmap(String url) {
// return get(url);
// }
//
// @Override
// public void putBitmap(String url, Bitmap bitmap) {
// put(url, bitmap);
// }
// }
//
感谢您的帮助并花时间阅读本文。