infinum android talks_10_android_libraries_used_on_daily_basis

46
We design and develop great software for mobile and web.

Upload: infinum-ltd

Post on 19-Jul-2015

198 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Infinum android talks_10_android_libraries_used_on_daily_basis

We design and develop great software for mobile and web.

Page 2: Infinum android talks_10_android_libraries_used_on_daily_basis

Android libraries which we use on daily basis

Ivan Kocijan

Page 3: Infinum android talks_10_android_libraries_used_on_daily_basis

ViewsDiscreet app rateButterKnifePicasso Universal Image LoaderGlideViewPager IndicatorCircleImageViewAndroid crop

APIRetrofitGSON

DatabaseDbFlowAndroid dbInspector

TestingMockitoRoboelectricOkHttp

OtherCrashlyticsEventbusDaggerJoda Time

Page 4: Infinum android talks_10_android_libraries_used_on_daily_basis

Discreet app rate

Page 5: Infinum android talks_10_android_libraries_used_on_daily_basis

ButterKnife

• View "injection" library

• It finds and automatically cast the corresponding view in your layout

• Helps you write less code

Page 6: Infinum android talks_10_android_libraries_used_on_daily_basis

ButterKnife usage

Page 7: Infinum android talks_10_android_libraries_used_on_daily_basis

ViewPagerIndicator

• Paging indicator widgets compatible with the ViewPager

• Helps you provide a clear indicator that additional content exist

Page 8: Infinum android talks_10_android_libraries_used_on_daily_basis
Page 9: Infinum android talks_10_android_libraries_used_on_daily_basis

ViewPagerIndicator usage

Page 10: Infinum android talks_10_android_libraries_used_on_daily_basis

CircleImageView

Page 11: Infinum android talks_10_android_libraries_used_on_daily_basis

CircleImageView usage

Page 12: Infinum android talks_10_android_libraries_used_on_daily_basis

Android crop

• Provides a simple image cropping

• Simple configuration

• Backwards compatible to Gingerbread

• Nice and clean UI

Page 13: Infinum android talks_10_android_libraries_used_on_daily_basis

Android crop usage• Declare CropImageActivity in your manifest file

Page 14: Infinum android talks_10_android_libraries_used_on_daily_basis

Android crop usage - part2

Page 15: Infinum android talks_10_android_libraries_used_on_daily_basis
Page 16: Infinum android talks_10_android_libraries_used_on_daily_basis

UniversalImageLoader

• Library for loading, caching and displaying images

• Highly customizable

• You can cache images on disk or memory or both

Page 17: Infinum android talks_10_android_libraries_used_on_daily_basis

UIL usage - part 1

Page 18: Infinum android talks_10_android_libraries_used_on_daily_basis

UIL usage - part 2

Page 19: Infinum android talks_10_android_libraries_used_on_daily_basis

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

Page 20: Infinum android talks_10_android_libraries_used_on_daily_basis

Glide usage

Page 21: Infinum android talks_10_android_libraries_used_on_daily_basis

Picasso

• Image downloading and caching library

• Easy to use

• Automatic memory and disk caching.

Page 22: Infinum android talks_10_android_libraries_used_on_daily_basis

Picasso usage

Page 23: Infinum android talks_10_android_libraries_used_on_daily_basis

UIL vs Picasso vs Glide

Objective:

• Load 8268x14173px (11MB) image into ImageView

• Do not use custom configuration

Page 24: Infinum android talks_10_android_libraries_used_on_daily_basis

Results

Glide UIL Picasso

Memory allocated (MB) 13 MB 20 MB ∞Time (s) 28 sec 46 sec ∞

Page 25: Infinum android talks_10_android_libraries_used_on_daily_basis

GSON

• Convert Java Objects into their JSON representation

• Convert a JSON string to an equivalent Java object

Page 26: Infinum android talks_10_android_libraries_used_on_daily_basis

GSON usage - part 1

Page 27: Infinum android talks_10_android_libraries_used_on_daily_basis

GSON usage - part 2

Page 28: Infinum android talks_10_android_libraries_used_on_daily_basis

Retrofit

• Use annotations to describe the HTTP request

• URL parameter replacement and query parameter support

• Multipart request body and file upload

Page 29: Infinum android talks_10_android_libraries_used_on_daily_basis

Retrofit usage - part 1

Page 30: Infinum android talks_10_android_libraries_used_on_daily_basis

Retrofit usage - part 2

Page 31: Infinum android talks_10_android_libraries_used_on_daily_basis

DbFlow

• ORM android database library with annotation processing

• Very fast

• Triggers, Views, Indexes, and many more SQLite features

• Approved by Željko Plesac

Page 32: Infinum android talks_10_android_libraries_used_on_daily_basis

DbFlow usage - part 1

Page 33: Infinum android talks_10_android_libraries_used_on_daily_basis

DbFlow usage - part 2

Page 34: Infinum android talks_10_android_libraries_used_on_daily_basis

DbFlow usage - part 3

Page 35: Infinum android talks_10_android_libraries_used_on_daily_basis

DbFlow - I want more!

• Check out Android Talks #10

Page 36: Infinum android talks_10_android_libraries_used_on_daily_basis

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

Page 37: Infinum android talks_10_android_libraries_used_on_daily_basis

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

Page 38: Infinum android talks_10_android_libraries_used_on_daily_basis

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

Page 39: Infinum android talks_10_android_libraries_used_on_daily_basis

OkHttp• Create MockWebServer

Page 40: Infinum android talks_10_android_libraries_used_on_daily_basis

Crashlytics

• Light weight crash reporting solution

• Easy to use

• Android studio plugin

• Very powerful

Page 41: Infinum android talks_10_android_libraries_used_on_daily_basis

Eventbus

• Publish/subscribe event bus

• Simplifies the communication between components

• Has advanced features like delivery threads, subscriber priorities

Page 42: Infinum android talks_10_android_libraries_used_on_daily_basis

Eventbus usage1. Define event

public class MessageEvent { /* Additional fields if needed */ }

2. Register subscriberEventBus.getDefault().register(this);

public void onEvent(MessageEvent event) {// Do something };

3. Register onEvent method

EventBus.getDefault().post(new MessageEvent());

4. Post event

Page 43: Infinum android talks_10_android_libraries_used_on_daily_basis

Dagger

• Dependency injector for Android and Java

• Makes each class easy to test

• Create reusable modules

• Check out their official site

Page 44: Infinum android talks_10_android_libraries_used_on_daily_basis

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

Page 45: Infinum android talks_10_android_libraries_used_on_daily_basis

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/

Page 46: Infinum android talks_10_android_libraries_used_on_daily_basis

email: [email protected]: @ikocijan Android talks: infinum.coAndroid talks video: Youtube channel

Thank you!