Objective:
Before summing up the use of pictures and the LRU algorithm, today to learn a better picture cache open source framework. Technology itself will continue to change, from the original use of softreference to achieve their own picture cache, and then do the e-commerce project their own implementation plan can not meet the needs of the project to Afinal, because afinal no longer maintenance and chose the teacher out of the same xutils, In the middle also exposed to other open source framework such as Picasso, the first impression on the Picasso is not very good, the first contact is to get the company just from the outsourcing company took over the photo-class app, the memory consumption is too large, the direct feeling is caused by the ListView sliding a little bit of lag, Old picture Cache frame Universalimageloader heard that has not really been used, the project is very small, almost millions of levels of the app, has been using the xutils, recently felt that the project is big up, In case Xutils does not maintain or the need to support the picture format more, perhaps Xutils is not the best choice, this is to learn the fundamental motive of Gilde it. Actually wanted to learn Facebook fresco picture frame, but a simple look, need to use with custom control, although powerful, but for the maintenance of the project modification cost that is not general high, later interested in learning it!
Glide Introduction:
Glide is an open source project for Google employees, recommended for Google I/O, a media management framework on an efficient, open source, Android device that follows the BSD, MIT, and Apache 2.0 protocols. Glide has the ability to capture, decode, and display video stills, pictures, animations, and more, as well as flexible APIs that enable developers to apply glide to virtually any network stack. There are two main purposes for creating glide, one is to achieve a smooth picture list scrolling effect, and the other is to support remote picture acquisition, sizing and presentation.
GitHub Address: Https://github.com/bumptech/glide
Glide features
- Easy to use
- High degree of adaptability and high degree of adaptation
- Support Common image format Jpg png gif webp
- Support multiple data source networks, local, resource, Assets, etc.
- Efficient cache policy supports memory and disk picture cache default bitmap format is reduced by at least half of rgb_565 RAM usage
- Lifecycle Integration automates management of requests based on the Activity/fragment life cycle
- Efficient handling of bitmap use bitmap pool to make bitmap reuse, actively call recycle Reclaim bitmap that need to be recycled, reduce system recovery pressure
Glide simple use 1.) Add Reference build.gradle add configuration
Compile ' com.github.bumptech.glide:glide:3.7.0 '
2.) Simple loading of picture instances
Glide.with (this). Load (IMAGEURL). into (ImageView);
3.) Configure load and load failed pictures
The API inside the placeholder (), error () function in the polymorphic implementation of the time can be specifically familiar with
Glide.with (this). Load (IMAGEURL). Placeholder (r.mipmap.ic_launcher). Error (R.mipmap.ic_launcher). into ( ImageView);
3.) Configure Load Animations
The API also provides several common animations: such as Crossfade ()
Glide.with (this). Load (IMAGEURL). Placeholder (r.mipmap.ic_launcher). Error (R.mipmap.ic_launcher). Animate (r.anim.item_alpha_in). into (ImageView);
4.) Configure thumbnail support
This will load the thumbnail and then load the full map
Glide.with (this). Load (IMAGEURL). Placeholder (r.mipmap.ic_launcher). Error (R.mipmap.ic_launcher). Animate (r.anim.item_alpha_in). Thumbnail (0.1f). into (ImageView);
5.) Configure Load Dimensions
Glide.with (this). Load (IMAGEURL). Placeholder (r.mipmap.ic_launcher). Error (R.mipmap.ic_launcher). Animate (r.anim.item_alpha_in). Thumbnail (0.1f). Override (On/off). into (ImageView);
6.) Configure dynamic cropping
Glide.with (this). Load (IMAGEURL). Placeholder (r.mipmap.ic_launcher). Error (R.mipmap.ic_launcher). Animate (r.anim.item_alpha_in). Thumbnail (0.1f). Override (.). Centercrop (). into (ImageView);
The API provides examples such as: Centercrop (), Fitcenter () and other functions can also be customized transformation, such as a person's corner converter
Public classGlideroundtransformextendsbitmaptransformation {Private floatRadius =0f; PublicGlideroundtransform (Context context) { This(Context, 4); } PublicGlideroundtransform (Context context,intDP) { Super(context); This. Radius = Resources.getsystem (). Getdisplaymetrics (). Density *DP; } @OverrideprotectedBitmap transform (Bitmappool pool, Bitmap totransform,intOutwidth,intoutheight) { returnRoundcrop (pool, totransform); } PrivateBitmap Roundcrop (Bitmappool pool, Bitmap source) {if(Source = =NULL)return NULL; Bitmap result=Pool.get (Source.getwidth (), Source.getheight (), Bitmap.Config.ARGB_8888); if(Result = =NULL) {result=Bitmap.createbitmap (Source.getwidth (), Source.getheight (), Bitmap.Config.ARGB_8888); } Canvas Canvas=NewCanvas (Result); Paint Paint=NewPaint (); Paint.setshader (NewBitmapshader (source, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP)); Paint.setantialias (true); RECTF RECTF=NewRECTF (0f, 0f, Source.getwidth (), Source.getheight ()); Canvas.drawroundrect (RECTF, radius, radius, paint); returnresult; } @Override PublicString getId () {returnGetClass (). GetName () +Math.Round (RADIUS); } }
Specific use
Glide.with (this). Load (IMAGEURL). Placeholder (r.mipmap.ic_launcher). Error (R.mipmap.ic_launcher). Animate (r.anim.item_alpha_in). Thumbnail (0.1f). Override (On/off). Transform (new glideroundtransform (this ). into (ImageView);
6.) Configure the dynamic target receive picture
There are many things in the project that need to be downloaded before you can do some compositing functions, such as the picture-and-text mix that appears in the project, how to achieve the target
Glide.with (this). Load (IMAGEURL). Centercrop (). to (new simpletarget<glidedrawable>() { @Override publicvoidSuper glidedrawable> glideanimation) { Imageview.setimagedrawable (Resource); } });
Android Explorer Image Cache < Glide> (iii)