[이미지 관리] Android Universal Image Loader
Android/Libraries 2014. 7. 24. 17:14 |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 |