Android Universal Image Loader

Android Universal Image Loader는 많은 앱에 적용되어 있고, 화면 크기를 기준으로 캐시 용량을 제한하는 등 다양한 캐시 정책을 지원한다. Executor, 스레드 풀 크기, , Bitmap Options 등 변경할 수 있는 옵션이 많습니다.


위 경로를 통해 접근하면 Android Universal Image Loader 
사용 방법 및 설명에 대해 나타나 있습니다 .

Android Universal Image Loader 특징

다중 스레드 이미지 로딩
이미지 디코드
메모리 캐시 
디스크 캐시
이미지 디스플레이 옵션 설정등
분리 된 옵션이있는 모든 디스플레이 이미지 호출을 사용자 정의 할 수있는 가능성
위젯 지원

Android Universal Image Loader 준비

https://github.com/nostra13/Android-Universal-Image-Loader

위 경로를 통해 jar 파일을 다운로드 합니다 .



다운 받은 jar 파일을 프로젝트 lib 폴더에 넣습니다.




Android Universal Image Loader 사용

1
2
3
4
5
6
7
8
9
<manifest>
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- Include next permission if you want to allow UIL to cache images on SD card -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    ...
    <application android:name="MyApplication">
        ...
    </application>
</manifest>


위와 같이 퍼미션을 등록 합니다 .


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this)
                .threadPriority(Thread.NORM_PRIORITY - 2)
                .denyCacheImageMultipleSizesInMemory()
                .discCacheFileNameGenerator(new Md5FileNameGenerator())
                .tasksProcessingOrder(QueueProcessingType.LIFO)
                .writeDebugLogs() // Remove for release app
                .build();
 
        ImageLoader.getInstance().init(config);
    }

이미지 로딩을 사용할 액티비티 onCreate ImageLoaderConfiguration 설정합니다 .



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
        .memoryCacheExtraOptions(480, 800) // default = device screen dimensions
        .discCacheExtraOptions(480, 800, CompressFormat.JPEG, 75, null)
        .taskExecutor(...)
        .taskExecutorForCachedImages(...)
        .threadPoolSize(3) // default
        .threadPriority(Thread.NORM_PRIORITY - 1) // default
        .tasksProcessingOrder(QueueProcessingType.FIFO) // default
        .denyCacheImageMultipleSizesInMemory()
        .memoryCache(new LruMemoryCache(2 * 1024 * 1024))
        .memoryCacheSize(2 * 1024 * 1024)
        .memoryCacheSizePercentage(13) // default
        .discCache(new UnlimitedDiscCache(cacheDir)) // default
        .discCacheSize(50 * 1024 * 1024)
        .discCacheFileCount(100)
        .discCacheFileNameGenerator(new HashCodeFileNameGenerator()) // default
        .imageDownloader(new BaseImageDownloader(context)) // default
        .imageDecoder(new BaseImageDecoder()) // default
        .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
        .writeDebugLogs()
        .build();
 

ImageLoaderConfiguration 모든 설정입니다 . 기호에 따라서 필요한 부분을 추가하여 작성하면 되겠습니다.




1
2
3
4
5
6
7
8
9
10
11
12
13
 
DisplayImageOptions options = new DisplayImageOptions.Builder()
                .showImageOnLoading(R.drawable.img_kakao) // 로딩중에 나타나는 이미지
                .showImageForEmptyUri(R.drawable.img_ing) // 값이 없을때 
                .showImageOnFail(R.drawable.img_end) // 에러 났을때 나타나는 이미지
                .cacheInMemory(true)
                .cacheOnDisc(true)
                .considerExifParams(true)
                .build();
 
        ImageLoadingListener animateFirstListener = new AnimateFirstDisplayListener();
 
        ImageLoader.getInstance().displayImage(arSrc.get(position).getImg(), addBookHolder.bookImage, options, animateFirstListener);

DisplayImageOptions 설정과 이미지 로딩 사용 방법 입니다 . 보여질 이미지에 대한 설정을 하고 이미지를 받아오도록 사용하는 코득가  되겠습니다 .


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
DisplayImageOptions options = new DisplayImageOptions.Builder()
        .showImageOnLoading(R.drawable.ic_stub) // resource or drawable
        .showImageForEmptyUri(R.drawable.ic_empty) // resource or drawable
        .showImageOnFail(R.drawable.ic_error) // resource or drawable
        .resetViewBeforeLoading(false)  // default
        .delayBeforeLoading(1000)
        .cacheInMemory(false// default
        .cacheOnDisc(false// default
        .preProcessor(...)
        .postProcessor(...)
        .extraForDownloader(...)
        .considerExifParams(false// default
        .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default
        .bitmapConfig(Bitmap.Config.ARGB_8888) // default
        .decodingOptions(...)
        .displayer(new SimpleBitmapDisplayer()) // default
        .handler(new Handler()) // default
        .build();
 

DisplayImageOptions 의 모든 기능 입니다 기호에 따라서 골라 사용 하면 되겠습니다 .
이미지 다운로딩 라이브러리를 통해서 사용가능한 url 입니다 .
 

1
2
3
4
5
String imageUri = "http://site.com/image.png"// from Web
String imageUri = "file:///mnt/sdcard/image.png"// from SD card
String imageUri = "content://media/external/audio/albumart/13"// from content provider
String imageUri = "assets://image.png"// from assets
String imageUri = "drawable://" + R.drawable.image; // from drawables (only images, non-9patch)


sdcard 에 있는 주소만 넣어주면 로컬에 있는 이미지도 불러올수 있습니다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// Load image, decode it to Bitmap and display Bitmap in ImageView (or any other view 
//  which implements ImageAware interface)
imageLoader.displayImage(imageUri, imageView, displayOptions, 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) {
        ...
    }
    @Override
    public void onLoadingCancelled(String imageUri, View view) {
        ...
    }
});


 
마지막으로 이미지를 받는 과정에서 생기는 이벤트를 캐치 할수 있는 메서드를 제공해 줍니다.


'Android > Libraries' 카테고리의 다른 글

UI Library  (0) 2015.09.15
[Robotium] Android Application Test 하기..  (0) 2015.07.08
[JavaMail] Java Mail API의 주요 구성 요소  (0) 2014.07.24
[JavaMail]  (0) 2014.07.24
Posted by 소망아기
: