SlideShare une entreprise Scribd logo
1  sur  46
Télécharger pour lire hors ligne
We design and develop great
software for mobile and web.
Android libraries which
we use on daily basis
Ivan Kocijan
Views
Discreet app rate
ButterKnife
Picasso
Universal Image Loader
Glide
ViewPager Indicator
CircleImageView
Android crop
API
Retrofit
GSON
Database
DbFlow
Android dbInspector
Testing
Mockito
Roboelectric
OkHttp
Other
Crashlytics
Eventbus
Dagger
Joda Time
Discreet app rate
ButterKnife
• View "injection" library
• It finds and automatically cast the corresponding
view in your layout
• Helps you write less code
ButterKnife usage
ViewPagerIndicator
• Paging indicator widgets compatible with the
ViewPager
• Helps you provide a clear indicator that additional
content exist
ViewPagerIndicator usage
CircleImageView
CircleImageView usage
Android crop
• Provides a simple image cropping
• Simple configuration
• Backwards compatible to Gingerbread
• Nice and clean UI
Android crop usage
• Declare CropImageActivity in your manifest file
Android crop usage - part2
UniversalImageLoader
• Library for loading, caching and displaying images
• Highly customizable
• You can cache images on disk or memory or both
UIL usage - part 1
UIL usage - part 2
Glide
• Glide supports fetching, decoding and displaying
video stills, images, and animated GIFs.
• Uses a custom HttpUrlConnection but it can use
Volley or OkHttp library instead
Glide usage
Picasso
• Image downloading and caching library
• Easy to use
• Automatic memory and disk caching.
Picasso usage
UIL vs Picasso vs Glide
Objective:
•Load 8268x14173px (11MB)
image into ImageView
•Do not use custom
configuration
Results
Glide UIL Picasso
Memory allocated (MB) 13 MB 20 MB ∞
Time (s) 28 sec 46 sec
∞
GSON
• Convert Java Objects into their JSON
representation
• Convert a JSON string to an equivalent Java object
GSON usage - part 1
GSON usage - part 2
Retrofit
• Use annotations to describe the HTTP request
• URL parameter replacement and query parameter
support
• Multipart request body and file upload
Retrofit usage - part 1
Retrofit usage - part 2
DbFlow
• ORM android database library with annotation
processing
• Very fast
• Triggers, Views, Indexes, and many more SQLite
features
• Approved by Željko Plesac
DbFlow usage - part 1
DbFlow usage - part 2
DbFlow usage - part 3
DbFlow - I want more!
• Check out Android Talks #10
DbInspector
• Created by Dino Kovač
• View the contents of the in-app database for
debugging purposes
• No need to pull the database from a rooted phone
• Approved by Željko Plesac
• Android talks #5
Mockito
• “Mockito is a mocking framework that tastes really
good”
• Create readable unit tests which produce clean
verification errors
• Top 10 Java library across all libraries
Robolectric
• A unit test framework that helps you test-drive the
development of your Android app
• Robolectric handles inflation of views, resource
loading, and lots of other stuff.
• Run your tests on your workstation, or on your
Continuous Integration environment
OkHttp
• Create MockWebServer
Crashlytics
• Light weight crash reporting solution
• Easy to use
• Android studio plugin
• Very powerful
Eventbus
• Publish/subscribe event bus
• Simplifies the communication between components
• Has advanced features like delivery threads,
subscriber priorities
Eventbus usage
1. Define event
public class MessageEvent { /* Additional fields if needed */ }
2. Register subscriber
EventBus.getDefault().register(this);
public void onEvent(MessageEvent event) {// Do something };
3. Register onEvent method
EventBus.getDefault().post(new MessageEvent());
4. Post event
Dagger
• Dependency injector for Android and Java
• Makes each class easy to test
• Create reusable modules
• Check out their official site
Joda Time
• Replacement for the Java date and time classes
• Provides simple API
• Multiple calendar systems
• Under active development since 2002
• From Java SE 8 onwards, users are asked to
migrate to java.time
Links
• ButterKnife - http://jakewharton.github.io/butterknife/
• ViewPagerIndicator - http://viewpagerindicator.com/
• CircleImageView - https://github.com/hdodenhof/CircleImageView
• Android Crop - https://github.com/jdamcd/android-crop
• UniversalImageLoader - https://github.com/nostra13/Android-Universal-Image-Loader
• Glide - https://github.com/bumptech/glide
• Picasso - http://square.github.io/picasso/
• Retrofit - http://square.github.io/retrofit/
• GSON - https://code.google.com/p/google-gson/
• DbFlow - https://github.com/Raizlabs/DBFlow
• DbInspector - https://github.com/infinum/android_dbinspector
• EventBus - https://github.com/greenrobot/EventBus
• Dagger - http://square.github.io/dagger/
• JodaTime - http://www.joda.org/joda-time/
• Mockito - http://mockito.org/
• Roboelectric - http://robolectric.org/
• OKHttp - https://github.com/square/okhttp
• Discreet app rate - https://github.com/PomepuyN/discreet-app-rate
• Crashlytics - https://try.crashlytics.com/
email: ivan.kocijan@infinum.hr
twitter: @ikocijan
Android talks: infinum.co
Android talks video: Youtube channel
Thank you!

Contenu connexe

Tendances

Making it Easier to Contribute to Open Source Projects Using Docker Container...
Making it Easier to Contribute to Open Source Projects Using Docker Container...Making it Easier to Contribute to Open Source Projects Using Docker Container...
Making it Easier to Contribute to Open Source Projects Using Docker Container...Docker, Inc.
 
DevOps, Microservices, and Azure Container Service
DevOps, Microservices, and Azure Container ServiceDevOps, Microservices, and Azure Container Service
DevOps, Microservices, and Azure Container ServiceDavid Tesar
 
Telepresence - Seamless Development Environments on Kubernetes
Telepresence - Seamless Development Environments on KubernetesTelepresence - Seamless Development Environments on Kubernetes
Telepresence - Seamless Development Environments on KubernetesAdnan Abdulhussein
 
Lessons from migrating container applications to azure
Lessons from migrating container applications to azureLessons from migrating container applications to azure
Lessons from migrating container applications to azureChristoph Schittko
 
Алексей Волков "Введение в React Native"
Алексей Волков "Введение в React Native"Алексей Волков "Введение в React Native"
Алексей Волков "Введение в React Native"Fwdays
 
Fullstack workshop
Fullstack workshopFullstack workshop
Fullstack workshopAssaf Gannon
 
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...Docker, Inc.
 
Bamboo Continuous Integration Server - Brief
Bamboo Continuous Integration Server - BriefBamboo Continuous Integration Server - Brief
Bamboo Continuous Integration Server - BriefEllen Feaheny
 
Антон Руткевич, Сборка Android-библиотеки нового поколения с помощью Gradle
Антон Руткевич, Сборка Android-библиотеки нового поколения с помощью GradleАнтон Руткевич, Сборка Android-библиотеки нового поколения с помощью Gradle
Антон Руткевич, Сборка Android-библиотеки нового поколения с помощью GradleYandex
 
SBG Infrastructure Tools
SBG Infrastructure ToolsSBG Infrastructure Tools
SBG Infrastructure Tools🤘Ivan Vandot
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkinsAbe Diaz
 
CI/CD Development in Kubernetes - Skaffold
CI/CD Development in Kubernetes -  SkaffoldCI/CD Development in Kubernetes -  Skaffold
CI/CD Development in Kubernetes - SkaffoldSuman Chakraborty
 
Let's talk Windows Containers on Windows Server 2019
Let's talk Windows Containers on Windows Server 2019Let's talk Windows Containers on Windows Server 2019
Let's talk Windows Containers on Windows Server 2019Stefan Scherer
 
Continuous Delivery Using Jenkins
Continuous Delivery Using JenkinsContinuous Delivery Using Jenkins
Continuous Delivery Using JenkinsCliffano Subagio
 
Jenkins tutorial for beginners
Jenkins tutorial for beginnersJenkins tutorial for beginners
Jenkins tutorial for beginnersBugRaptors
 
What is jenkins
What is jenkinsWhat is jenkins
What is jenkinslinuxdady
 
#OSSPARIS17 - Pipeline de déploiement continu dans Kubernetes, par JULIEN COR...
#OSSPARIS17 - Pipeline de déploiement continu dans Kubernetes, par JULIEN COR...#OSSPARIS17 - Pipeline de déploiement continu dans Kubernetes, par JULIEN COR...
#OSSPARIS17 - Pipeline de déploiement continu dans Kubernetes, par JULIEN COR...Paris Open Source Summit
 
Azure Meetup Stuttgart - Multi-arch Docker images
Azure Meetup Stuttgart - Multi-arch Docker imagesAzure Meetup Stuttgart - Multi-arch Docker images
Azure Meetup Stuttgart - Multi-arch Docker imagesStefan Scherer
 

Tendances (20)

Making it Easier to Contribute to Open Source Projects Using Docker Container...
Making it Easier to Contribute to Open Source Projects Using Docker Container...Making it Easier to Contribute to Open Source Projects Using Docker Container...
Making it Easier to Contribute to Open Source Projects Using Docker Container...
 
Jenkins Reviewbot
Jenkins ReviewbotJenkins Reviewbot
Jenkins Reviewbot
 
Render-as-You-Fetch
Render-as-You-FetchRender-as-You-Fetch
Render-as-You-Fetch
 
DevOps, Microservices, and Azure Container Service
DevOps, Microservices, and Azure Container ServiceDevOps, Microservices, and Azure Container Service
DevOps, Microservices, and Azure Container Service
 
Telepresence - Seamless Development Environments on Kubernetes
Telepresence - Seamless Development Environments on KubernetesTelepresence - Seamless Development Environments on Kubernetes
Telepresence - Seamless Development Environments on Kubernetes
 
Lessons from migrating container applications to azure
Lessons from migrating container applications to azureLessons from migrating container applications to azure
Lessons from migrating container applications to azure
 
Алексей Волков "Введение в React Native"
Алексей Волков "Введение в React Native"Алексей Волков "Введение в React Native"
Алексей Волков "Введение в React Native"
 
Fullstack workshop
Fullstack workshopFullstack workshop
Fullstack workshop
 
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
 
Bamboo Continuous Integration Server - Brief
Bamboo Continuous Integration Server - BriefBamboo Continuous Integration Server - Brief
Bamboo Continuous Integration Server - Brief
 
Антон Руткевич, Сборка Android-библиотеки нового поколения с помощью Gradle
Антон Руткевич, Сборка Android-библиотеки нового поколения с помощью GradleАнтон Руткевич, Сборка Android-библиотеки нового поколения с помощью Gradle
Антон Руткевич, Сборка Android-библиотеки нового поколения с помощью Gradle
 
SBG Infrastructure Tools
SBG Infrastructure ToolsSBG Infrastructure Tools
SBG Infrastructure Tools
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkins
 
CI/CD Development in Kubernetes - Skaffold
CI/CD Development in Kubernetes -  SkaffoldCI/CD Development in Kubernetes -  Skaffold
CI/CD Development in Kubernetes - Skaffold
 
Let's talk Windows Containers on Windows Server 2019
Let's talk Windows Containers on Windows Server 2019Let's talk Windows Containers on Windows Server 2019
Let's talk Windows Containers on Windows Server 2019
 
Continuous Delivery Using Jenkins
Continuous Delivery Using JenkinsContinuous Delivery Using Jenkins
Continuous Delivery Using Jenkins
 
Jenkins tutorial for beginners
Jenkins tutorial for beginnersJenkins tutorial for beginners
Jenkins tutorial for beginners
 
What is jenkins
What is jenkinsWhat is jenkins
What is jenkins
 
#OSSPARIS17 - Pipeline de déploiement continu dans Kubernetes, par JULIEN COR...
#OSSPARIS17 - Pipeline de déploiement continu dans Kubernetes, par JULIEN COR...#OSSPARIS17 - Pipeline de déploiement continu dans Kubernetes, par JULIEN COR...
#OSSPARIS17 - Pipeline de déploiement continu dans Kubernetes, par JULIEN COR...
 
Azure Meetup Stuttgart - Multi-arch Docker images
Azure Meetup Stuttgart - Multi-arch Docker imagesAzure Meetup Stuttgart - Multi-arch Docker images
Azure Meetup Stuttgart - Multi-arch Docker images
 

Similaire à Infinum android talks_10_android_libraries_used_on_daily_basis

MEAN Stack Warm-up
MEAN Stack Warm-upMEAN Stack Warm-up
MEAN Stack Warm-upTroy Miles
 
Introduction to React native
Introduction to React nativeIntroduction to React native
Introduction to React nativeDhaval Barot
 
Mastering react with redux
Mastering react with reduxMastering react with redux
Mastering react with reduxGaurav Singh
 
Announcing AWS CodeBuild - January 2017 Online Teck Talks
Announcing AWS CodeBuild - January 2017 Online Teck TalksAnnouncing AWS CodeBuild - January 2017 Online Teck Talks
Announcing AWS CodeBuild - January 2017 Online Teck TalksAmazon Web Services
 
.NET? MonoDroid Does
.NET? MonoDroid Does.NET? MonoDroid Does
.NET? MonoDroid DoesKevin McMahon
 
Starting from scratch in 2017
Starting from scratch in 2017Starting from scratch in 2017
Starting from scratch in 2017Stefano Bonetta
 
From MEAN to the MERN Stack
From MEAN to the MERN StackFrom MEAN to the MERN Stack
From MEAN to the MERN StackTroy Miles
 
AngularJS - Architecture decisions in a large project 
AngularJS - Architecture decisionsin a large project AngularJS - Architecture decisionsin a large project 
AngularJS - Architecture decisions in a large project Elad Hirsch
 
Griffon for the Enterprise
Griffon for the EnterpriseGriffon for the Enterprise
Griffon for the EnterpriseJames Williams
 
Efficient Parallel Testing with Docker
Efficient Parallel Testing with DockerEfficient Parallel Testing with Docker
Efficient Parallel Testing with DockerLaura Frank Tacho
 
Angular2.0@Shanghai0319
Angular2.0@Shanghai0319Angular2.0@Shanghai0319
Angular2.0@Shanghai0319Bibby Chung
 
Application Lifecycle Management
Application Lifecycle ManagementApplication Lifecycle Management
Application Lifecycle ManagementAmazon Web Services
 
UCCSC 2016
UCCSC 2016UCCSC 2016
UCCSC 2016Alex Wu
 
Building mobile apps with PhoneGap and Backbone
Building mobile apps with PhoneGap and BackboneBuilding mobile apps with PhoneGap and Backbone
Building mobile apps with PhoneGap and BackboneTroy Miles
 

Similaire à Infinum android talks_10_android_libraries_used_on_daily_basis (20)

MEAN Stack Warm-up
MEAN Stack Warm-upMEAN Stack Warm-up
MEAN Stack Warm-up
 
Revue des annonces WWDC2015
Revue des annonces WWDC2015Revue des annonces WWDC2015
Revue des annonces WWDC2015
 
Introduction to React native
Introduction to React nativeIntroduction to React native
Introduction to React native
 
Mastering react with redux
Mastering react with reduxMastering react with redux
Mastering react with redux
 
Duo World Architecture
Duo World ArchitectureDuo World Architecture
Duo World Architecture
 
Announcing AWS CodeBuild - January 2017 Online Teck Talks
Announcing AWS CodeBuild - January 2017 Online Teck TalksAnnouncing AWS CodeBuild - January 2017 Online Teck Talks
Announcing AWS CodeBuild - January 2017 Online Teck Talks
 
.NET? MonoDroid Does
.NET? MonoDroid Does.NET? MonoDroid Does
.NET? MonoDroid Does
 
Starting from scratch in 2017
Starting from scratch in 2017Starting from scratch in 2017
Starting from scratch in 2017
 
From MEAN to the MERN Stack
From MEAN to the MERN StackFrom MEAN to the MERN Stack
From MEAN to the MERN Stack
 
Android quick talk
Android quick talkAndroid quick talk
Android quick talk
 
AngularJS - Architecture decisions in a large project 
AngularJS - Architecture decisionsin a large project AngularJS - Architecture decisionsin a large project 
AngularJS - Architecture decisions in a large project 
 
Top java script frameworks ppt
Top java script frameworks pptTop java script frameworks ppt
Top java script frameworks ppt
 
Griffon for the Enterprise
Griffon for the EnterpriseGriffon for the Enterprise
Griffon for the Enterprise
 
Efficient Parallel Testing with Docker
Efficient Parallel Testing with DockerEfficient Parallel Testing with Docker
Efficient Parallel Testing with Docker
 
Android OS
Android OSAndroid OS
Android OS
 
Angular2.0@Shanghai0319
Angular2.0@Shanghai0319Angular2.0@Shanghai0319
Angular2.0@Shanghai0319
 
Application Lifecycle Management
Application Lifecycle ManagementApplication Lifecycle Management
Application Lifecycle Management
 
Test automation proposal
Test automation proposalTest automation proposal
Test automation proposal
 
UCCSC 2016
UCCSC 2016UCCSC 2016
UCCSC 2016
 
Building mobile apps with PhoneGap and Backbone
Building mobile apps with PhoneGap and BackboneBuilding mobile apps with PhoneGap and Backbone
Building mobile apps with PhoneGap and Backbone
 

Plus de Infinum

Infinum Android Talks #20 - Making your Android apps fast like Blue Runner an...
Infinum Android Talks #20 - Making your Android apps fast like Blue Runner an...Infinum Android Talks #20 - Making your Android apps fast like Blue Runner an...
Infinum Android Talks #20 - Making your Android apps fast like Blue Runner an...Infinum
 
Infinum Android Talks #20 - DiffUtil
Infinum Android Talks #20 - DiffUtilInfinum Android Talks #20 - DiffUtil
Infinum Android Talks #20 - DiffUtilInfinum
 
Infinum Android Talks #20 - Benefits of using Kotlin
Infinum Android Talks #20 - Benefits of using KotlinInfinum Android Talks #20 - Benefits of using Kotlin
Infinum Android Talks #20 - Benefits of using KotlinInfinum
 
Infinum iOS Talks #4 - Making our VIPER more reactive
Infinum iOS Talks #4 - Making our VIPER more reactiveInfinum iOS Talks #4 - Making our VIPER more reactive
Infinum iOS Talks #4 - Making our VIPER more reactiveInfinum
 
Infinum iOS Talks #4 - Making your Swift networking code more awesome with Re...
Infinum iOS Talks #4 - Making your Swift networking code more awesome with Re...Infinum iOS Talks #4 - Making your Swift networking code more awesome with Re...
Infinum iOS Talks #4 - Making your Swift networking code more awesome with Re...Infinum
 
Infinum Android Talks #13 - Using ViewDragHelper
Infinum Android Talks #13 - Using ViewDragHelperInfinum Android Talks #13 - Using ViewDragHelper
Infinum Android Talks #13 - Using ViewDragHelperInfinum
 
Infinum Android Talks #14 - Log4j
Infinum Android Talks #14 - Log4jInfinum Android Talks #14 - Log4j
Infinum Android Talks #14 - Log4jInfinum
 
Infinum Android Talks #9 - Making your app location-aware
Infinum Android Talks #9 - Making your app location-awareInfinum Android Talks #9 - Making your app location-aware
Infinum Android Talks #9 - Making your app location-awareInfinum
 
Infinum Android Talks #14 - Gradle plugins
Infinum Android Talks #14 - Gradle pluginsInfinum Android Talks #14 - Gradle plugins
Infinum Android Talks #14 - Gradle pluginsInfinum
 
Infinum Android Talks #14 - Facebook for Android API
Infinum Android Talks #14 - Facebook for Android APIInfinum Android Talks #14 - Facebook for Android API
Infinum Android Talks #14 - Facebook for Android APIInfinum
 
Infinum Android Talks #19 - Stop wasting time fixing bugs with TDD by Domagoj...
Infinum Android Talks #19 - Stop wasting time fixing bugs with TDD by Domagoj...Infinum Android Talks #19 - Stop wasting time fixing bugs with TDD by Domagoj...
Infinum Android Talks #19 - Stop wasting time fixing bugs with TDD by Domagoj...Infinum
 
Infinum Android Talks #18 - Create fun lists by Ivan Marić
Infinum Android Talks #18 - Create fun lists by Ivan MarićInfinum Android Talks #18 - Create fun lists by Ivan Marić
Infinum Android Talks #18 - Create fun lists by Ivan MarićInfinum
 
Infinum Android Talks #18 - In-app billing by Ivan Marić
Infinum Android Talks #18 - In-app billing by Ivan MarićInfinum Android Talks #18 - In-app billing by Ivan Marić
Infinum Android Talks #18 - In-app billing by Ivan MarićInfinum
 
Infinum Android Talks #18 - How to cache like a boss by Željko Plesac
Infinum Android Talks #18 - How to cache like a boss by Željko PlesacInfinum Android Talks #18 - How to cache like a boss by Željko Plesac
Infinum Android Talks #18 - How to cache like a boss by Željko PlesacInfinum
 
Infinum iOS Talks #2 - VIPER for everybody by Damjan Vujaklija
Infinum iOS Talks #2 - VIPER for everybody by Damjan VujaklijaInfinum iOS Talks #2 - VIPER for everybody by Damjan Vujaklija
Infinum iOS Talks #2 - VIPER for everybody by Damjan VujaklijaInfinum
 
Infinum iOS Talks #2 - Xamarin by Ivan Đikić
Infinum iOS Talks #2 - Xamarin by Ivan ĐikićInfinum iOS Talks #2 - Xamarin by Ivan Đikić
Infinum iOS Talks #2 - Xamarin by Ivan ĐikićInfinum
 
Infinum iOS Talks #1 - Swift under the hood: Method Dispatching by Vlaho Poluta
Infinum iOS Talks #1 - Swift under the hood: Method Dispatching by Vlaho PolutaInfinum iOS Talks #1 - Swift under the hood: Method Dispatching by Vlaho Poluta
Infinum iOS Talks #1 - Swift under the hood: Method Dispatching by Vlaho PolutaInfinum
 
Infinum iOS Talks #1 - Swift done right by Ivan Dikic
Infinum iOS Talks #1 - Swift done right by Ivan DikicInfinum iOS Talks #1 - Swift done right by Ivan Dikic
Infinum iOS Talks #1 - Swift done right by Ivan DikicInfinum
 
Infinum iOS Talks #1 - Becoming an iOS developer swiftly by Vedran Burojevic
Infinum iOS Talks #1 - Becoming an iOS developer swiftly by Vedran BurojevicInfinum iOS Talks #1 - Becoming an iOS developer swiftly by Vedran Burojevic
Infinum iOS Talks #1 - Becoming an iOS developer swiftly by Vedran BurojevicInfinum
 
Infinum Android Talks #17 - Testing your Android applications by Ivan Kust
Infinum Android Talks #17 - Testing your Android applications by Ivan KustInfinum Android Talks #17 - Testing your Android applications by Ivan Kust
Infinum Android Talks #17 - Testing your Android applications by Ivan KustInfinum
 

Plus de Infinum (20)

Infinum Android Talks #20 - Making your Android apps fast like Blue Runner an...
Infinum Android Talks #20 - Making your Android apps fast like Blue Runner an...Infinum Android Talks #20 - Making your Android apps fast like Blue Runner an...
Infinum Android Talks #20 - Making your Android apps fast like Blue Runner an...
 
Infinum Android Talks #20 - DiffUtil
Infinum Android Talks #20 - DiffUtilInfinum Android Talks #20 - DiffUtil
Infinum Android Talks #20 - DiffUtil
 
Infinum Android Talks #20 - Benefits of using Kotlin
Infinum Android Talks #20 - Benefits of using KotlinInfinum Android Talks #20 - Benefits of using Kotlin
Infinum Android Talks #20 - Benefits of using Kotlin
 
Infinum iOS Talks #4 - Making our VIPER more reactive
Infinum iOS Talks #4 - Making our VIPER more reactiveInfinum iOS Talks #4 - Making our VIPER more reactive
Infinum iOS Talks #4 - Making our VIPER more reactive
 
Infinum iOS Talks #4 - Making your Swift networking code more awesome with Re...
Infinum iOS Talks #4 - Making your Swift networking code more awesome with Re...Infinum iOS Talks #4 - Making your Swift networking code more awesome with Re...
Infinum iOS Talks #4 - Making your Swift networking code more awesome with Re...
 
Infinum Android Talks #13 - Using ViewDragHelper
Infinum Android Talks #13 - Using ViewDragHelperInfinum Android Talks #13 - Using ViewDragHelper
Infinum Android Talks #13 - Using ViewDragHelper
 
Infinum Android Talks #14 - Log4j
Infinum Android Talks #14 - Log4jInfinum Android Talks #14 - Log4j
Infinum Android Talks #14 - Log4j
 
Infinum Android Talks #9 - Making your app location-aware
Infinum Android Talks #9 - Making your app location-awareInfinum Android Talks #9 - Making your app location-aware
Infinum Android Talks #9 - Making your app location-aware
 
Infinum Android Talks #14 - Gradle plugins
Infinum Android Talks #14 - Gradle pluginsInfinum Android Talks #14 - Gradle plugins
Infinum Android Talks #14 - Gradle plugins
 
Infinum Android Talks #14 - Facebook for Android API
Infinum Android Talks #14 - Facebook for Android APIInfinum Android Talks #14 - Facebook for Android API
Infinum Android Talks #14 - Facebook for Android API
 
Infinum Android Talks #19 - Stop wasting time fixing bugs with TDD by Domagoj...
Infinum Android Talks #19 - Stop wasting time fixing bugs with TDD by Domagoj...Infinum Android Talks #19 - Stop wasting time fixing bugs with TDD by Domagoj...
Infinum Android Talks #19 - Stop wasting time fixing bugs with TDD by Domagoj...
 
Infinum Android Talks #18 - Create fun lists by Ivan Marić
Infinum Android Talks #18 - Create fun lists by Ivan MarićInfinum Android Talks #18 - Create fun lists by Ivan Marić
Infinum Android Talks #18 - Create fun lists by Ivan Marić
 
Infinum Android Talks #18 - In-app billing by Ivan Marić
Infinum Android Talks #18 - In-app billing by Ivan MarićInfinum Android Talks #18 - In-app billing by Ivan Marić
Infinum Android Talks #18 - In-app billing by Ivan Marić
 
Infinum Android Talks #18 - How to cache like a boss by Željko Plesac
Infinum Android Talks #18 - How to cache like a boss by Željko PlesacInfinum Android Talks #18 - How to cache like a boss by Željko Plesac
Infinum Android Talks #18 - How to cache like a boss by Željko Plesac
 
Infinum iOS Talks #2 - VIPER for everybody by Damjan Vujaklija
Infinum iOS Talks #2 - VIPER for everybody by Damjan VujaklijaInfinum iOS Talks #2 - VIPER for everybody by Damjan Vujaklija
Infinum iOS Talks #2 - VIPER for everybody by Damjan Vujaklija
 
Infinum iOS Talks #2 - Xamarin by Ivan Đikić
Infinum iOS Talks #2 - Xamarin by Ivan ĐikićInfinum iOS Talks #2 - Xamarin by Ivan Đikić
Infinum iOS Talks #2 - Xamarin by Ivan Đikić
 
Infinum iOS Talks #1 - Swift under the hood: Method Dispatching by Vlaho Poluta
Infinum iOS Talks #1 - Swift under the hood: Method Dispatching by Vlaho PolutaInfinum iOS Talks #1 - Swift under the hood: Method Dispatching by Vlaho Poluta
Infinum iOS Talks #1 - Swift under the hood: Method Dispatching by Vlaho Poluta
 
Infinum iOS Talks #1 - Swift done right by Ivan Dikic
Infinum iOS Talks #1 - Swift done right by Ivan DikicInfinum iOS Talks #1 - Swift done right by Ivan Dikic
Infinum iOS Talks #1 - Swift done right by Ivan Dikic
 
Infinum iOS Talks #1 - Becoming an iOS developer swiftly by Vedran Burojevic
Infinum iOS Talks #1 - Becoming an iOS developer swiftly by Vedran BurojevicInfinum iOS Talks #1 - Becoming an iOS developer swiftly by Vedran Burojevic
Infinum iOS Talks #1 - Becoming an iOS developer swiftly by Vedran Burojevic
 
Infinum Android Talks #17 - Testing your Android applications by Ivan Kust
Infinum Android Talks #17 - Testing your Android applications by Ivan KustInfinum Android Talks #17 - Testing your Android applications by Ivan Kust
Infinum Android Talks #17 - Testing your Android applications by Ivan Kust
 

Dernier

%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfonteinmasabamasaba
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfkalichargn70th171
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...masabamasaba
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...Jittipong Loespradit
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareJim McKeeth
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...masabamasaba
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
tonesoftg
tonesoftgtonesoftg
tonesoftglanshi9
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is insideshinachiaurasa2
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesVictorSzoltysek
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT  - Elevating Productivity in Today's Agile EnvironmentHarnessing ChatGPT  - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT - Elevating Productivity in Today's Agile EnvironmentVictorSzoltysek
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park masabamasaba
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastPapp Krisztián
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Bert Jan Schrijver
 

Dernier (20)

%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT  - Elevating Productivity in Today's Agile EnvironmentHarnessing ChatGPT  - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 

Infinum android talks_10_android_libraries_used_on_daily_basis

  • 1. We design and develop great software for mobile and web.
  • 2. Android libraries which we use on daily basis Ivan Kocijan
  • 3. Views Discreet app rate ButterKnife Picasso Universal Image Loader Glide ViewPager Indicator CircleImageView Android crop API Retrofit GSON Database DbFlow Android dbInspector Testing Mockito Roboelectric OkHttp Other Crashlytics Eventbus Dagger Joda Time
  • 5. ButterKnife • View "injection" library • It finds and automatically cast the corresponding view in your layout • Helps you write less code
  • 7. ViewPagerIndicator • Paging indicator widgets compatible with the ViewPager • Helps you provide a clear indicator that additional content exist
  • 8.
  • 12. Android crop • Provides a simple image cropping • Simple configuration • Backwards compatible to Gingerbread • Nice and clean UI
  • 13. Android crop usage • Declare CropImageActivity in your manifest file
  • 15.
  • 16. UniversalImageLoader • Library for loading, caching and displaying images • Highly customizable • You can cache images on disk or memory or both
  • 17. UIL usage - part 1
  • 18. UIL usage - part 2
  • 19. Glide • Glide supports fetching, decoding and displaying video stills, images, and animated GIFs. • Uses a custom HttpUrlConnection but it can use Volley or OkHttp library instead
  • 21. Picasso • Image downloading and caching library • Easy to use • Automatic memory and disk caching.
  • 23. UIL vs Picasso vs Glide Objective: •Load 8268x14173px (11MB) image into ImageView •Do not use custom configuration
  • 24. Results Glide UIL Picasso Memory allocated (MB) 13 MB 20 MB ∞ Time (s) 28 sec 46 sec ∞
  • 25. GSON • Convert Java Objects into their JSON representation • Convert a JSON string to an equivalent Java object
  • 26. GSON usage - part 1
  • 27. GSON usage - part 2
  • 28. Retrofit • Use annotations to describe the HTTP request • URL parameter replacement and query parameter support • Multipart request body and file upload
  • 31. DbFlow • ORM android database library with annotation processing • Very fast • Triggers, Views, Indexes, and many more SQLite features • Approved by Željko Plesac
  • 32. DbFlow usage - part 1
  • 33. DbFlow usage - part 2
  • 34. DbFlow usage - part 3
  • 35. DbFlow - I want more! • Check out Android Talks #10
  • 36. DbInspector • Created by Dino Kovač • View the contents of the in-app database for debugging purposes • No need to pull the database from a rooted phone • Approved by Željko Plesac • Android talks #5
  • 37. Mockito • “Mockito is a mocking framework that tastes really good” • Create readable unit tests which produce clean verification errors • Top 10 Java library across all libraries
  • 38. Robolectric • A unit test framework that helps you test-drive the development of your Android app • Robolectric handles inflation of views, resource loading, and lots of other stuff. • Run your tests on your workstation, or on your Continuous Integration environment
  • 40. Crashlytics • Light weight crash reporting solution • Easy to use • Android studio plugin • Very powerful
  • 41. Eventbus • Publish/subscribe event bus • Simplifies the communication between components • Has advanced features like delivery threads, subscriber priorities
  • 42. Eventbus usage 1. Define event public class MessageEvent { /* Additional fields if needed */ } 2. Register subscriber EventBus.getDefault().register(this); public void onEvent(MessageEvent event) {// Do something }; 3. Register onEvent method EventBus.getDefault().post(new MessageEvent()); 4. Post event
  • 43. Dagger • Dependency injector for Android and Java • Makes each class easy to test • Create reusable modules • Check out their official site
  • 44. Joda Time • Replacement for the Java date and time classes • Provides simple API • Multiple calendar systems • Under active development since 2002 • From Java SE 8 onwards, users are asked to migrate to java.time
  • 45. Links • ButterKnife - http://jakewharton.github.io/butterknife/ • ViewPagerIndicator - http://viewpagerindicator.com/ • CircleImageView - https://github.com/hdodenhof/CircleImageView • Android Crop - https://github.com/jdamcd/android-crop • UniversalImageLoader - https://github.com/nostra13/Android-Universal-Image-Loader • Glide - https://github.com/bumptech/glide • Picasso - http://square.github.io/picasso/ • Retrofit - http://square.github.io/retrofit/ • GSON - https://code.google.com/p/google-gson/ • DbFlow - https://github.com/Raizlabs/DBFlow • DbInspector - https://github.com/infinum/android_dbinspector • EventBus - https://github.com/greenrobot/EventBus • Dagger - http://square.github.io/dagger/ • JodaTime - http://www.joda.org/joda-time/ • Mockito - http://mockito.org/ • Roboelectric - http://robolectric.org/ • OKHttp - https://github.com/square/okhttp • Discreet app rate - https://github.com/PomepuyN/discreet-app-rate • Crashlytics - https://try.crashlytics.com/
  • 46. email: ivan.kocijan@infinum.hr twitter: @ikocijan Android talks: infinum.co Android talks video: Youtube channel Thank you!