使用ImageLoader在可折叠应用栏中通过URL加载图像

时间:2016-01-22 12:25:54

标签: android url android-image android-collapsingtoolbarlayout android-appbarlayout

我正在尝试通过ImageLoader类将图像加载到可折叠的应用栏中。当我在其他活动/片段/ recyclerview上使用相同的代码时,它的工作完美但在可折叠的应用栏中失败。

以下是我正在使用的代码:

                ImageLoader myLoader=new ImageLoader(getApplicationContext());
                myLoader.DisplayImage(flag,ivFlag);

我想可能是我没有给出正确的背景。

我尝试通过此代码手动加载图片,并且完美运行:

ivFlag.setImageDrawable(getResources().getDrawable(R.drawable.india));

2 个答案:

答案 0 :(得分:0)

我使用NetworkImageView而不是简单的ImageView,它就像魅力一样。这就是我的方式:

private ImageLoader mImageLoader;    
NetworkImageView proficPic,ivFlag;

这就是我在onCreate()方法中使用它的方式。

mImageLoader = VolleySingleton.getInstance().getImageLoader();

                proficPic.setImageUrl(imageURL, mImageLoader);
                ivFlag.setImageUrl(flag, mImageLoader);

这是我的VolleySingleton.java类

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;
    }


}

答案 1 :(得分:0)

可能效率低下的方式如下:

        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) {

        }
    });