使用 ImageLoader 在可折叠应用栏中通过 URL 加载图像
Load image via URL in collapsible app bar using ImageLoader
我正在尝试通过 ImageLoader class 将图像加载到可折叠的应用栏中。当我在其他 activities/fragments/recyclerview 上使用相同的代码时,它工作正常但在可折叠应用栏中失败。
这是我正在使用的代码:
ImageLoader myLoader=new ImageLoader(getApplicationContext());
myLoader.DisplayImage(flag,ivFlag);
我想可能是我没有提供正确的上下文。
我尝试通过这段代码手动加载图像,它运行良好:
ivFlag.setImageDrawable(getResources().getDrawable(R.drawable.india));
我使用 NetworkImageView 而不是简单的 ImageView,它的效果很好。我是这样做的:
private ImageLoader mImageLoader;
NetworkImageView proficPic,ivFlag;
这就是我在 onCreate() 方法中使用它的方式。
mImageLoader = VolleySingleton.getInstance().getImageLoader();
proficPic.setImageUrl(imageURL, mImageLoader);
ivFlag.setImageUrl(flag, mImageLoader);
这是我的 VolleySingleton.java class
import android.content.Context;
import android.graphics.Bitmap;
import android.support.v4.util.LruCache;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.Volley;
import com.truelancer.app.ProfileDetail;
public class VolleySingleton {
private static VolleySingleton mInstance = null;
private RequestQueue mRequestQueue;
private ImageLoader mImageLoader;
private VolleySingleton(){
mRequestQueue = Volley.newRequestQueue(ProfileDetail.getAppContext());
mImageLoader = new ImageLoader(this.mRequestQueue, new ImageLoader.ImageCache() {
private final LruCache<String, Bitmap> mCache = new LruCache<String, Bitmap>(10);
public void putBitmap(String url, Bitmap bitmap) {
mCache.put(url, bitmap);
}
public Bitmap getBitmap(String url) {
return mCache.get(url);
}
});
}
public static VolleySingleton getInstance(){
if(mInstance == null){
mInstance = new VolleySingleton();
}
return mInstance;
}
public RequestQueue getRequestQueue(){
return this.mRequestQueue;
}
public ImageLoader getImageLoader(){
return this.mImageLoader;
}
}
一个,可能效率不高,方法如下:
ImageLoader imageLoader = ImageLoader.getInstance();
imageLoader.loadImage(IMAGE_URI, new ImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
// Sets the background drawable in callback
BitmapDrawable drawable = new BitmapDrawable(loadedImage);
collapsingToolbarLayout.setBackground(drawable);
}
@Override
public void onLoadingCancelled(String imageUri, View view) {
}
});
我正在尝试通过 ImageLoader class 将图像加载到可折叠的应用栏中。当我在其他 activities/fragments/recyclerview 上使用相同的代码时,它工作正常但在可折叠应用栏中失败。
这是我正在使用的代码:
ImageLoader myLoader=new ImageLoader(getApplicationContext());
myLoader.DisplayImage(flag,ivFlag);
我想可能是我没有提供正确的上下文。
我尝试通过这段代码手动加载图像,它运行良好:
ivFlag.setImageDrawable(getResources().getDrawable(R.drawable.india));
我使用 NetworkImageView 而不是简单的 ImageView,它的效果很好。我是这样做的:
private ImageLoader mImageLoader;
NetworkImageView proficPic,ivFlag;
这就是我在 onCreate() 方法中使用它的方式。
mImageLoader = VolleySingleton.getInstance().getImageLoader();
proficPic.setImageUrl(imageURL, mImageLoader);
ivFlag.setImageUrl(flag, mImageLoader);
这是我的 VolleySingleton.java class
import android.content.Context;
import android.graphics.Bitmap;
import android.support.v4.util.LruCache;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.Volley;
import com.truelancer.app.ProfileDetail;
public class VolleySingleton {
private static VolleySingleton mInstance = null;
private RequestQueue mRequestQueue;
private ImageLoader mImageLoader;
private VolleySingleton(){
mRequestQueue = Volley.newRequestQueue(ProfileDetail.getAppContext());
mImageLoader = new ImageLoader(this.mRequestQueue, new ImageLoader.ImageCache() {
private final LruCache<String, Bitmap> mCache = new LruCache<String, Bitmap>(10);
public void putBitmap(String url, Bitmap bitmap) {
mCache.put(url, bitmap);
}
public Bitmap getBitmap(String url) {
return mCache.get(url);
}
});
}
public static VolleySingleton getInstance(){
if(mInstance == null){
mInstance = new VolleySingleton();
}
return mInstance;
}
public RequestQueue getRequestQueue(){
return this.mRequestQueue;
}
public ImageLoader getImageLoader(){
return this.mImageLoader;
}
}
一个,可能效率不高,方法如下:
ImageLoader imageLoader = ImageLoader.getInstance();
imageLoader.loadImage(IMAGE_URI, new ImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
// Sets the background drawable in callback
BitmapDrawable drawable = new BitmapDrawable(loadedImage);
collapsingToolbarLayout.setBackground(drawable);
}
@Override
public void onLoadingCancelled(String imageUri, View view) {
}
});