Android 네트워크 이미지 로드 프레임워크: Universal-ImageLoader 소개

8332 단어
  • 네트워크 이미지 로드 프레임워크: Universal-ImageLoader
  • github 소스 오픈 주소:https://github.com/nostra13/Android-Universal-Image-Loader
  • 특징:
  • 로컬 이미지 지원, 네트워크 이미지 다중 스레드 비동기 로드 및 캐시 처리
  • 자체 프로젝트 맞춤형 구성에 따른 ImageLoader로 이미지 로드
  • 이미지 로드 프로세스 감청 처리, 이미지 로드 정지, 재로드 등
  • 현재 메모리 상태에 따라 자동으로 그림을 처리하여 OOM
  • 을 방지한다.
  • 미비한 점: 로컬 파일 압축 처리에 대한 방법이 없고 기본적으로Src모드에서 그림을 설정하고 그림에 대한 Background 속성이 개방되지 않은 API 사용:
  • /** *   universal-imageloader   , Application            * @description: * @date 2016-1-12   4:18:34 */
    public class MyApplication extends Application {
    public static ImageLoader loader;
        @Override
        public void onCreate() {
            initConfiguration();
        }
    
        /** *    ImageLoaderConfiguration,             * @description: * @author ldm * @date 2016-1-12   4:42:31 */
        private void initConfiguration() {
            ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this).memoryCacheExtraOptions(480, 800) //              
                    .diskCacheExtraOptions(480, 800, null) //            (       ),        
                    .threadPoolSize(3) //            
                    .threadPriority(Thread.NORM_PRIORITY - 2) //           
                    .tasksProcessingOrder(QueueProcessingType.FIFO) //       
                    .denyCacheImageMultipleSizesInMemory()//                 
                    .memoryCache(new LruMemoryCache(2 * 1024 * 1024)) //              
                    .memoryCacheSize(2 * 1024 * 1024) //           
                    .memoryCacheSizePercentage(13) //                        ,            1/8
                    .discCache(new UnlimitedDiskCache(new File(Environment.getExternalStorageDirectory() + "mydata/imagecaches")))//         
                    .diskCacheSize(50 * 1024 * 1024) //    sd (  )      50M
                    .diskCacheFileCount(100) //            
                    // .diskCacheFileNameGenerator(new Md5FileNameGenerator())      URL MD5  
                    .imageDownloader(new BaseImageDownloader(this)) //           
                    .imageDecoder(new BaseImageDecoder(false)) // default
                    .defaultDisplayImageOptions(getDisplayOptions()) //       DisplayImageOptions
                    .writeDebugLogs() //     log
                    .build(); //     
            ImageLoader.getInstance().init(config);
            loader=ImageLoader.getInstance();
        }
    
        /** *    DisplayImageOptions * @description: * @date 2016-1-12   4:46:47 */
        private DisplayImageOptions getDisplayOptions() {
            DisplayImageOptions options = new DisplayImageOptions.Builder().showImageOnLoading(R.drawable.ic_launcher) //              
                    .showImageForEmptyUri(R.drawable.ic_launcher)//     Uri           
                    .showImageOnFail(R.drawable.ic_launcher) //                
                    .cacheInMemory(true)//                
                    .cacheOnDisk(true)//             SD  
                    .considerExifParams(true) //     JPEG  EXIF  (  ,  )
                    .imageScaleType(ImageScaleType.IN_SAMPLE_INT)//               
                    .bitmapConfig(Bitmap.Config.RGB_565)//          
                    .delayBeforeLoading(0)//            
                    .resetViewBeforeLoading(true)//             ,  
                    .displayer(new RoundedBitmapDisplayer(20))//      ,     ,    !
                    .displayer(new FadeInBitmapDisplayer(100))//              ,       
                    .build();//     
            return options;
        }
    }
     Activity   :

    여기 코드판 써요.
    public class MainActivity extends Activity {
        private ImageView loader_iv;
        private ImageLoader loader;
        private String url="";
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            loader_iv=(ImageView)findViewById(R.id.loader_iv);
            loader=MyApplication.loader;//
            loader=ImageLoader.getInstance();
            loader.displayImage(url, loader_iv);//loader.displayImage          ,             
            //        
            url="file:///"+"    ";
            loader.displayImage(url, loader_iv);
        }
    }

    마지막으로 안드로이드 매니페스트에서 잊지 마세요.MyApplication 및 INTENT 네트워크 요청 권한을 xml에 구성합니다.더 많은 방법이 학습 중이다.

    좋은 웹페이지 즐겨찾기