Image Loaders - commonsware.comdependencies{ compile'de*greenrobot:eventbus!2•4*0' compile...
Transcript of Image Loaders - commonsware.comdependencies{ compile'de*greenrobot:eventbus!2•4*0' compile...
![Page 1: Image Loaders - commonsware.comdependencies{ compile'de*greenrobot:eventbus!2•4*0' compile 1com.squareup.picasso:picasso:2.5.2' compile 'com.squareup.retrofit:retrofit:i.9.O'](https://reader034.fdocuments.in/reader034/viewer/2022052102/603c9afbc21dd255f154031d/html5/thumbnails/1.jpg)
Copyright © 2015 CommonsWare, LLC
Image Loaders
Android Developer Training
![Page 2: Image Loaders - commonsware.comdependencies{ compile'de*greenrobot:eventbus!2•4*0' compile 1com.squareup.picasso:picasso:2.5.2' compile 'com.squareup.retrofit:retrofit:i.9.O'](https://reader034.fdocuments.in/reader034/viewer/2022052102/603c9afbc21dd255f154031d/html5/thumbnails/2.jpg)
Copyright © 2015 CommonsWare, LLC
What You Are Looking For
● Flexible Sources● Network● Local Files● MediaStore● Other Provider Uri Values
– e.g., contact photos● Pluggable Sources
![Page 3: Image Loaders - commonsware.comdependencies{ compile'de*greenrobot:eventbus!2•4*0' compile 1com.squareup.picasso:picasso:2.5.2' compile 'com.squareup.retrofit:retrofit:i.9.O'](https://reader034.fdocuments.in/reader034/viewer/2022052102/603c9afbc21dd255f154031d/html5/thumbnails/3.jpg)
Copyright © 2015 CommonsWare, LLC
What You Are Looking For
● Flexible Targets● ImageView● Plain Bitmap
– E.g., Notifications● Pluggable Targets
– E.g., Leanback ImageCardView
![Page 4: Image Loaders - commonsware.comdependencies{ compile'de*greenrobot:eventbus!2•4*0' compile 1com.squareup.picasso:picasso:2.5.2' compile 'com.squareup.retrofit:retrofit:i.9.O'](https://reader034.fdocuments.in/reader034/viewer/2022052102/603c9afbc21dd255f154031d/html5/thumbnails/4.jpg)
Copyright © 2015 CommonsWare, LLC
What You Are Looking For
● Intelligent Bitmap Handling● Pluggable and/or Resizeable Cache● inBitmap Support● Recycling Support
– e.g., ListView rows
![Page 5: Image Loaders - commonsware.comdependencies{ compile'de*greenrobot:eventbus!2•4*0' compile 1com.squareup.picasso:picasso:2.5.2' compile 'com.squareup.retrofit:retrofit:i.9.O'](https://reader034.fdocuments.in/reader034/viewer/2022052102/603c9afbc21dd255f154031d/html5/thumbnails/5.jpg)
Copyright © 2015 CommonsWare, LLC
What You Are Looking For
● Other Features● SSL Support
– Including custom TrustManager[]● Configurable/Shareable Thread Pool● Two-Level Caching
– RAM– Disk
● Clean API
![Page 6: Image Loaders - commonsware.comdependencies{ compile'de*greenrobot:eventbus!2•4*0' compile 1com.squareup.picasso:picasso:2.5.2' compile 'com.squareup.retrofit:retrofit:i.9.O'](https://reader034.fdocuments.in/reader034/viewer/2022052102/603c9afbc21dd255f154031d/html5/thumbnails/6.jpg)
Copyright © 2015 CommonsWare, LLC
Image Loading Libraries
● Popular● Picasso● Universal Image Loader
● Controversial● Fresco
● Others● https://android-arsenal.com/tag/46
![Page 7: Image Loaders - commonsware.comdependencies{ compile'de*greenrobot:eventbus!2•4*0' compile 1com.squareup.picasso:picasso:2.5.2' compile 'com.squareup.retrofit:retrofit:i.9.O'](https://reader034.fdocuments.in/reader034/viewer/2022052102/603c9afbc21dd255f154031d/html5/thumbnails/7.jpg)
{"items": [
{"tags"; l
"android" F
"parse.com"J,"owner'1: {
"reputation": 8P"userid" : 3834761."usertype": "registered","acceptrate": 1G0,"profile image": ,,http5:/7uww>qravatancom/avatar/ffb9e28e492c3503333778Be3fbBd5B3?s=l"display name": "user3834761" #
"link": ,,http;//?tg(;Kgygrflÿÿÿ<;gm/ÿlsÿÿs/?9j4761/pÿ?r3B34761,'},"is answered" : false,"view count'1: 15,"answercount": 1F"score'1: 0,"last activity date": E1436208937,“creationdate": S14339S1054,
"questioned 31216642."link": "htto://stackoverflow.coffl/auestions/31216642/oarseauerv- for-profile-picture-whil“title": "ParseQuery for profile picture while displaying post"
},
![Page 8: Image Loaders - commonsware.comdependencies{ compile'de*greenrobot:eventbus!2•4*0' compile 1com.squareup.picasso:picasso:2.5.2' compile 'com.squareup.retrofit:retrofit:i.9.O'](https://reader034.fdocuments.in/reader034/viewer/2022052102/603c9afbc21dd255f154031d/html5/thumbnails/8.jpg)
dependencies {compile 'de *greenrobot:eventbus!2•4*0'compile 1com.squareup.picasso:picasso:2.5.2'compile 'com.squareup.retrofit:retrofit:i.9.O'
![Page 9: Image Loaders - commonsware.comdependencies{ compile'de*greenrobot:eventbus!2•4*0' compile 1com.squareup.picasso:picasso:2.5.2' compile 'com.squareup.retrofit:retrofit:i.9.O'](https://reader034.fdocuments.in/reader034/viewer/2022052102/603c9afbc21dd255f154031d/html5/thumbnails/9.jpg)
public classList<Item>
}
SOQuestions {items;
![Page 10: Image Loaders - commonsware.comdependencies{ compile'de*greenrobot:eventbus!2•4*0' compile 1com.squareup.picasso:picasso:2.5.2' compile 'com.squareup.retrofit:retrofit:i.9.O'](https://reader034.fdocuments.in/reader034/viewer/2022052102/603c9afbc21dd255f154031d/html5/thumbnails/10.jpg)
public class Item {String title;Owner owner;String link;
(aOverridepublic String toStringO { return(title); }
![Page 11: Image Loaders - commonsware.comdependencies{ compile'de*greenrobot:eventbus!2•4*0' compile 1com.squareup.picasso:picasso:2.5.2' compile 'com.squareup.retrofit:retrofit:i.9.O'](https://reader034.fdocuments.in/reader034/viewer/2022052102/603c9afbc21dd255f154031d/html5/thumbnails/11.jpg)
import com.google,gson.annotations.Serial!zedName;
public class Owner {@SerializedName(',profile_image,,) String profilelmage;
}
![Page 12: Image Loaders - commonsware.comdependencies{ compile'de*greenrobot:eventbus!2•4*0' compile 1com.squareup.picasso:picasso:2.5.2' compile 'com.squareup.retrofit:retrofit:i.9.O'](https://reader034.fdocuments.in/reader034/viewer/2022052102/603c9afbc21dd255f154031d/html5/thumbnails/12.jpg)
public interface StackOverflowInterface{@GET(”/2.1/questions?order=desc&sort=creation&site=stackoverflow”)void questions(@Query(MtaggedM) String tags, Callback<SOQuestions> cb);
}
![Page 13: Image Loaders - commonsware.comdependencies{ compile'de*greenrobot:eventbus!2•4*0' compile 1com.squareup.picasso:picasso:2.5.2' compile 'com.squareup.retrofit:retrofit:i.9.O'](https://reader034.fdocuments.in/reader034/viewer/2022052102/603c9afbc21dd255f154031d/html5/thumbnails/13.jpg)
public View onCreateView(Layoutlnflater inflater,ViewGroup container,Bundle savedlnstanceState) {
View result=super.onCreateView(inflater, container, savedlnstanceState);
setRetainlnstance(true);
RestAdapter restAdapterÿnew RestAdapter.Builder{).setEndpointC*https://api ■stackexchang*»com”)
.build();StackOverflowInterface so=
restAdapter.create(StackOverflowInterface.class);
so.questionsÿ'android”, this);
return(result);}
![Page 14: Image Loaders - commonsware.comdependencies{ compile'de*greenrobot:eventbus!2•4*0' compile 1com.squareup.picasso:picasso:2.5.2' compile 'com.squareup.retrofit:retrofit:i.9.O'](https://reader034.fdocuments.in/reader034/viewer/2022052102/603c9afbc21dd255f154031d/html5/thumbnails/14.jpg)
@Qverridepublic void failure(RetrofitError exception) {Toast, getActivityO , exception*getMessage(),
Toast.LENGTH_LONG)*show();Log*e(getClass()*getSimpleName(),
"Exception from Retrofit request to StackOverflow", exception);}
@0verridepublic void success(SOQuestions questions, Response response) {setListAdapter{new ItemsAdapter(questions*items));
}
![Page 15: Image Loaders - commonsware.comdependencies{ compile'de*greenrobot:eventbus!2•4*0' compile 1com.squareup.picasso:picasso:2.5.2' compile 'com.squareup.retrofit:retrofit:i.9.O'](https://reader034.fdocuments.in/reader034/viewer/2022052102/603c9afbc21dd255f154031d/html5/thumbnails/15.jpg)
class ItemsAdapter extends ArrayAdapter<Item> {ItemsAdapter(List<Item> items){super(getActivity(}3 R *layout * rotv, R*id.title, items);
}
@Gverridepublic View getView(int position, View convertView, ViewGroup parent) {
View row=super,getView(position, convertView, parent);Item item=getItem(position);ImageView icon"(ImageView)row*findViewByld(R *id * icon);
Picasso*with(getActivityQ)*load(item*owner*profilelmage).fit()*centerCrop().placeholder(R*drawable *owner-placeholder).error(R *drawable *owner_error) * into(icon);
TextView title=(TextView)row,findViewByld(R,i d .title);
title*setText(Html,fromhtml(getltem(position).title));
return(row);}
>
![Page 16: Image Loaders - commonsware.comdependencies{ compile'de*greenrobot:eventbus!2•4*0' compile 1com.squareup.picasso:picasso:2.5.2' compile 'com.squareup.retrofit:retrofit:i.9.O'](https://reader034.fdocuments.in/reader034/viewer/2022052102/603c9afbc21dd255f154031d/html5/thumbnails/16.jpg)
dependencies {compile 1 com.nostral3.univer5al-imageloader:universal--image-loader:i.9.3 '
>
![Page 17: Image Loaders - commonsware.comdependencies{ compile'de*greenrobot:eventbus!2•4*0' compile 1com.squareup.picasso:picasso:2.5.2' compile 'com.squareup.retrofit:retrofit:i.9.O'](https://reader034.fdocuments.in/reader034/viewer/2022052102/603c9afbc21dd255f154031d/html5/thumbnails/17.jpg)
public class VideosFragment extendsContractListFragment<VideosFragment*Contract> implementsLoaderManager.LoaderCallbacks<Cursor> ,SimpleCursorAdapter.ViewBinder {
private ImageLoader imageLoader;
(ÿOverridepublic void onAttachfActivity host){super.onAttach(host);
ImageLoaderConfiguiration ilConfig=new ImageLoaderConfiguration * BuiIder(getActivity())* build()j
imageLoader=ImageLoader.getlnstance();imageLoader.init(ilConfig);
![Page 18: Image Loaders - commonsware.comdependencies{ compile'de*greenrobot:eventbus!2•4*0' compile 1com.squareup.picasso:picasso:2.5.2' compile 'com.squareup.retrofit:retrofit:i.9.O'](https://reader034.fdocuments.in/reader034/viewer/2022052102/603c9afbc21dd255f154031d/html5/thumbnails/18.jpg)
(ÿOverridepublic void onActivityCreated(Bundle state){super.onActivityCreated(state);
String[] from={ MediaStore.Video.Medi a ,TITLE, MediaStore.Video,Media. };
int[] to= { android.R,id ,textl, R.id.thumbnail };SimpleCursorAdapter adapter=
new SimpleCursorAdapter(getActivity{)} R.layout,row, null5from, tQj G);
adapter,setViewBinder(this);setListAdapter(adapter);
getLoaderManager(),initLoader(0, null, this);}
![Page 19: Image Loaders - commonsware.comdependencies{ compile'de*greenrobot:eventbus!2•4*0' compile 1com.squareup.picasso:picasso:2.5.2' compile 'com.squareup.retrofit:retrofit:i.9.O'](https://reader034.fdocuments.in/reader034/viewer/2022052102/603c9afbc21dd255f154031d/html5/thumbnails/19.jpg)
gOverridepublic Loader<Cursor> onCreateLoader (iirt arg0, Bundle argl) {
return(new CursorLoader (getActivi ty () ,MediaStore * Video * Medi a * EXTERNAL_ CONTENT_URI,null, mill, mill ?
MediaStore,Video,Media* TITLE) ) ;}
@Overridepublic void onLoadFinished(Loader<Cursor> loader, Cursor c) {
( (CursorAdapter)getlistAdapter ( ) ) .swapCursor (c) ;}
@Overridepublic void onLoaderReset (Loader<Cursor> loader) {
( (CursorAdapter)getListAdapter () ) * swapCursor (null);}
![Page 20: Image Loaders - commonsware.comdependencies{ compile'de*greenrobot:eventbus!2•4*0' compile 1com.squareup.picasso:picasso:2.5.2' compile 'com.squareup.retrofit:retrofit:i.9.O'](https://reader034.fdocuments.in/reader034/viewer/2022052102/603c9afbc21dd255f154031d/html5/thumbnails/20.jpg)
(ÿOverridepublic boolean setViewValue(View v, Cursor c, int column){if (column == c.getColumnIndex(Media$tore« Video.Media._ID)){
Uri video=ContentUris.withAppendedId( Med1astore,Video,Media,EXTERNAL_CONTENT_URI,
c.getlnt(column));DisplaylmageOptions opts=new DisplaylmageOptions*Builder()
*showImageOnLoading(R.drawable* ic_media_video_poster).buildQ ;
imageLoader.display!mage(video.toStringO, (ImageView)v, opts);
return(true);}
return(false);>