Skip to content

A simple MVVM Android app to fetch images from Flickr Api and use LiveData and LRU cache without using any external library.

Notifications You must be signed in to change notification settings

txtasad/PiczillaMVVM

Repository files navigation

PiczillaMVVM

A simple MVVM app to fetch images from Flickr Api and use LiveData and LRU cache without using any external library.

App Screens

App features

  • App shows random images from Flickr Api.
  • App has single full screen imageView to show images.
  • App has two buttons (next & previous) to navigate through images.
  • App uses cache strategy which means if an image has been fetched from url then it will be stored and served from cache.
  • App follows MVVM (Model View ViewModel) pattern.
  • No external library used for networking or image caching.
  • HttpUrlConnection with AsyncTask used for api calling and LRU cache used for effective loading and caching.
  • App supports landscape and portrait modes.

Api used

Below Flickr api is used to fetch images urls: https://api.flickr.com/services/rest/?method=<photos_method>&api_key=<api_key>&format=json&nojsoncallback=1&safe_search=1&tags=kitten&per_page=10&page=1

where, photos_method = flickr.photos.search api_key = 3e7cc266ae2b0e0d78e279ce8e361736 Please register at https://www.flickr.com/services/api/ in case the given api key does not work.

Build image url from response object (farm, server, id, secret are present in response object)

https://farm${this.farm}.staticflickr.com/${this.server}/${this.id}_${this.secret}_q.jpg

App structure

App follows below structure:

  • model
    • Package contains POJO class for photo from api response.
  • viewmodel
    • ImagesViewModel: ViewModel containing logic to fetch image urls and check cache if any bitmap is available else download bitmap from url.
  • repository
    • Package contains class for fetching data repository of images list(JSON) and image i.e asyncTasks for fetching image urls and bitmaps.
    • DownloadImageTask: AsyncTask for downloading bitmap from given url. Also saves downloaded bitmap into cache.
    • FetchImageUrlsTask: AsyncTask for fetching images urls from Flickr api in chunks of 10 images per hit. Also parses json response.
  • utils
    • Package contains utility class and generic cache class.
    • ImagesCache: Common LRU cache defined class. Any changes related to cache can be done here.
    • Utility: Utility class where HttpUrlConnection is defined for fetch images and download bitmaps.
  • view
    • Package contains UI classes which needs to be shown on app.
    • MainActivity: Single activity which contains a fragment.
    • MainFragment: Fragment class which contains ImageView and two buttons which will be shown to the user.

About

A simple MVVM Android app to fetch images from Flickr Api and use LiveData and LRU cache without using any external library.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages