SlideShare a Scribd company logo
Android Effective UI
Tips, Tricks and Patterns
Adham Enaya
adhamenaya.com 1
Topics
• Introduction
• Resources and qualifiers
• Using ButterKnife Library
• Model View Presenter (MVP)
• Some advices
adhamenaya.com 2
Motivation
• Provide and enjoyable user experience.
• Change the UI depending on the device.
• Improve layout performance.
• Create Customized widgets.
• Make the UI code maintainable and testable.
adhamenaya.com 3
Android Devices
• Almost 19,000 devices(60% growth yearly)
adhamenaya.com 4
Motivation (2)
How can we change the UI
depending on the device ?
By using Android Resources
adhamenaya.com 5
Android Recourses
• Color: declares the app
color pallet
• Drawable: images
assets
• Layout: xml file declares
the app layout.
• Menu: xml file declares
the UI menu
• Integer: integer values
in xml and java codes.
adhamenaya.com 6
Resources & Qualifiers
• Screen Density: hdpi, mdpi … etc
• Screen Size: large, small .. etc
• Language: ar, en, ar-JO
• Min Width: sw600dp, sw720dp
• Screen Orientation: port and land
• Android API level: v7, v8, v9 …etc
adhamenaya.com 7
Resources & Qualifiers/Screen Destiny
• Screen Destiny: quantity pixels(dots) per inch
– ldpi: ~120dpi
– mdpi: ~160dpi
– hdpi: ~240dpi
– xhdpi: ~360dpi
– xxhdpi:480dpi
– xxxhdpi: ~640dpi
adhamenaya.com 8
Resources & Qualifiers/Screen Density
adhamenaya.com 9
Resources & Qualifiers/Screen Destiny
adhamenaya.com 10
Resources & Qualifiers/Screen Size
• xlarge screens are at least 960dp x 720dp > 7 inch
• large screens are at least 640dp x 480dp 5-7 inch
• normal screens are at least 470dp x 320dp 3.0-4.7 inch
• small screens are at least 426dp x 320dp 2.2-2.7 inch
adhamenaya.com 11
Resources & Qualifiers/Screen Size
• Android screen resolution distribution in China. (Umeng data)
adhamenaya.com 12
How to use Qualifiers?
• Create new directory in res/ folder
• The name of the folder in this format:
– <resources_name>-<qualifier>
– Resource name: such drawable, layout …
– Qualifier: such as hdpi, mdpi, land, port…
adhamenaya.com 13
Android resources example
• drawable/: for every thing
• drawable-en/ : for English locale
• drawable-en-port/ : for English and in portrait
orientation
• drawable-en-notouch-12key/ : For English
and in notouch devices and 12key as primary
input
• drawable-port-ldpi/ : for low density screen
and in portrait orientation
adhamenaya.com 14
Android resources example(2)
• layout-v4: API level (android 1.6)
• layout- h720dp: Available height 720
• Layout-sw600dp: Smallest width 600
Same application with different layouts for each device.
adhamenaya.com 15
Using Butter Knife Library (1)
• Inject Views and view events in activities and
fragments.
• Notation –based. By : Jake Wharton (Square).
adhamenaya.com 16
Using Butter Knife Library (2)
• Using findViewById
adhamenaya.com 17
Using the Butter Knife Library (3)
• Add dependency to build.gradle:
– compile 'com.jakewharton:butterknife:6.1.0‘
• In the onCreate() method of the
activity, before using any the views,
call inject on the Butterknife object:
– ButterKnife.inject(this);
adhamenaya.com 18
ButterKnife / Insatiate the view (4)
• Use:
– @InjectView(R.id.sample_textview);
– TextView textview;
• Rather than:
– TextView textview;
– textview =
(TextView)findViewById(R.id.sample_textview);
adhamenaya.com 19
Butter Knife / View Events(5)
• Use:
@OnClick(R.id.sample_textview)
public void showToastMessage(){
// DO SOTHING ….
}
adhamenaya.com 20
Android Design Pattern
Model-View-Presenter (MVP)
adhamenaya.com 21
What is MVP?
• The MVP pattern allows separate the
presentation layer(UI) from the business logic
adhamenaya.com 22
Why use MVP?
• Android activities are closely coupled to both
interface and data.
– Such as: CursorAdapter (View)+Cursor(data)
• Application to be easily extensible and
maintainable.
– Such as: changing the data access (from local
database to web service).
• Easier to test each interface alone.
adhamenaya.com 23
How to implement MVP ?
• MVP architecture consists of 3 layers:
– View
– Presenter
– Model
View Presenter Model
User Event Update Model
Update view State Changed
event
adhamenaya.com 24
MVP: VIEW
• Activity, Fragment, View …
• Has a reference to the Presenter
• Propagates evens from UI to the Presenter.
(such as onClick)
• Exposes methods that controls the
presentation objects. (Such as Show/Hide
progress bar)
adhamenaya.com 25
MVP: PRESENTER
• Middle-man Between the View and Presenter
• Has reference to View and Model.
• Introduce a level of abstraction to the data
coming from the model, and formats it before
sending it to the view (this makes the View
and Model independent).
• Updates the UI, the difference to the MVC.
adhamenaya.com 26
MVP: Model (Interactor)
• Gateway towards the business logic.
• Contains methods to for data retrival.
adhamenaya.com 27
MVP Conventions
• MVP
– Views: ExampleView
– Listeners: ExampleListener
– Presenters: ExamplePresenter
• > impl: ExamplePresenterImpl
– Interactors: ExampleInteractor
• > impl: ExmpleInteractorImpl
adhamenaya.com 28
MVP Example
Activity Presenter
Network
Interactor
Press Login Button valiadteAccount()
loginSuccess() networkSuccess()
loginFailue() networkFailure()
adhamenaya.com 29
MVP Example: Login
adhamenaya.com 30
Login Sequence
LoginActivity PresenterImpl
(onLoginFinsishedListener)
InteractorImpl
attempLogin(..)
validateCredentials(..)
onSuccess()
navigateToMainActivity()
onError()
loginFaild()
loginTapped()
Web
Service
adhamenaya.com 31
MVP vs. MVC
• MVP Pattern
– View is more loosely coupled to the model. The
presenter is responsible for binding the model to
the view.
– Easier to unit test because interaction with the
view is through an interface
– Usually view to presenter map one to one.
Complex views may have multi presenters.
adhamenaya.com 32
MVP architecture
adhamenaya.com 33
MVP vs. MVC
• MVC Pattern
– Controller are based on behaviors and can be
shared across views
– Can be responsible for determining which view to
display
34adhamenaya.com
MVC architecture
adhamenaya.com 35
Some Advices
• Avoid expensive tasks on the UI thread.
• Avoid code duplicity
• Use themes, styles and colors properly.
• Think in UI layer as isolated domain.
• Write testable code and test it.
• Measure the UI performance using the
performance measure tools.
adhamenaya.com 36
Any Questions?
Contact me: a.it@hotmail.com
adhamenaya.com 37

More Related Content

What's hot (20)

PDF
Building Scalable JavaScript Apps
Gil Fink
 
PDF
Angular 10 course_content
NAVEENSAGGAM1
 
PDF
Android Lollipop and Material Design
James Montemagno
 
PPTX
Material Design Android
Samiullah Farooqui
 
PPTX
Angular Js
Knoldus Inc.
 
PDF
Angular material
Kalpesh Satasiya
 
PPT
JAX 08 - Agile RCP
Heiko Seeberger
 
PPTX
angular-formly presentation
Annia Martinez
 
PPTX
Modules in AngularJs
K Arunkumar
 
PDF
Beyond AngularJS: Best practices and more
Ari Lerner
 
PPTX
Drawing Tool
Dinesh Pathak
 
PPTX
Model View Presenter (MVP) In Aspnet
rainynovember12
 
PPTX
iOS UI best practices
DianaKhersonskaia
 
PDF
Angular.js - JS Camp UKraine 2013
Max Klymyshyn
 
PDF
Angular EE - Special Workshop by Nir Kaufman
Nir Kaufman
 
PPTX
Angular 9
Raja Vishnu
 
PDF
Tdd in android (mvp)
Prateek Jain
 
PPTX
Type of angular 2
Alexandre Marreiros
 
ODP
Angular 6 - The Complete Guide
Sam Dias
 
PPTX
Introduction To Model View Presenter
saeed shargi ghazani
 
Building Scalable JavaScript Apps
Gil Fink
 
Angular 10 course_content
NAVEENSAGGAM1
 
Android Lollipop and Material Design
James Montemagno
 
Material Design Android
Samiullah Farooqui
 
Angular Js
Knoldus Inc.
 
Angular material
Kalpesh Satasiya
 
JAX 08 - Agile RCP
Heiko Seeberger
 
angular-formly presentation
Annia Martinez
 
Modules in AngularJs
K Arunkumar
 
Beyond AngularJS: Best practices and more
Ari Lerner
 
Drawing Tool
Dinesh Pathak
 
Model View Presenter (MVP) In Aspnet
rainynovember12
 
iOS UI best practices
DianaKhersonskaia
 
Angular.js - JS Camp UKraine 2013
Max Klymyshyn
 
Angular EE - Special Workshop by Nir Kaufman
Nir Kaufman
 
Angular 9
Raja Vishnu
 
Tdd in android (mvp)
Prateek Jain
 
Type of angular 2
Alexandre Marreiros
 
Angular 6 - The Complete Guide
Sam Dias
 
Introduction To Model View Presenter
saeed shargi ghazani
 

Viewers also liked (18)

PDF
Android Architecture MVP Pattern
Jeff Potter
 
PPTX
Clean architecture
andbed
 
PDF
Mvp in practice
彥彬 洪
 
PDF
Java Svet - Communication Between Android App Components
Aleksandar Ilić
 
PDF
Skroutz Android MVP and Adapter Delegates presentation
gmetal
 
PDF
Core Android
Dominik Helleberg
 
PDF
Karumi Dojo: Kata Maxibon
Pedro Vicente Gómez Sánchez
 
PDF
Infinum Android Talks #12 - MVP design pattern for Android Apps
Infinum
 
PDF
Mvc, mvp, mvvm...
Yury Kisliak
 
PDF
Clean Architecture
Badoo
 
PPTX
Rendra Toro - Model View Presenter
Dicoding
 
PPTX
Yoza Aprilio - We must design
Dicoding
 
PDF
MVP Clean Architecture
Himanshu Dudhat
 
PPTX
Mobility Beyond Imagination (MBI)
Alex Ureta Jr.
 
PPTX
Design Pattern - MVC, MVP and MVVM
Mudasir Qazi
 
PDF
Effective Android UI - English
Pedro Vicente Gómez Sánchez
 
PDF
Building maintainable app
Kristijan Jurković
 
PDF
The Future Of Work & The Work Of The Future
Arturo Pelayo
 
Android Architecture MVP Pattern
Jeff Potter
 
Clean architecture
andbed
 
Mvp in practice
彥彬 洪
 
Java Svet - Communication Between Android App Components
Aleksandar Ilić
 
Skroutz Android MVP and Adapter Delegates presentation
gmetal
 
Core Android
Dominik Helleberg
 
Karumi Dojo: Kata Maxibon
Pedro Vicente Gómez Sánchez
 
Infinum Android Talks #12 - MVP design pattern for Android Apps
Infinum
 
Mvc, mvp, mvvm...
Yury Kisliak
 
Clean Architecture
Badoo
 
Rendra Toro - Model View Presenter
Dicoding
 
Yoza Aprilio - We must design
Dicoding
 
MVP Clean Architecture
Himanshu Dudhat
 
Mobility Beyond Imagination (MBI)
Alex Ureta Jr.
 
Design Pattern - MVC, MVP and MVVM
Mudasir Qazi
 
Effective Android UI - English
Pedro Vicente Gómez Sánchez
 
Building maintainable app
Kristijan Jurković
 
The Future Of Work & The Work Of The Future
Arturo Pelayo
 
Ad

Similar to Android Effective UI: Tips, Tricks and Patterns (20)

PPTX
Evolution of the SAP User Experience and Technology Stack
Victor Ionescu
 
PDF
Android development first steps
christoforosnalmpantis
 
PDF
R programming for statistics and dash board
SrinivasacharG1
 
PDF
R scripts for statistics and dashboard designs
SrinivasacharG1
 
PDF
Device Independent API design
Amrita jain
 
PDF
Droidcon 2013 automotive quality dunca_czol_garmin
Droidcon Berlin
 
PPTX
Mini training- Scenario Driven Design
Betclic Everest Group Tech Team
 
PPTX
Vue Storefront - Progressive Web App for Magento (1.9, 2.x) - MM18DE speech
Divante
 
PDF
Good bye Massive View Controller!
Supercharge
 
PDF
Forge - DevCon 2016: Implementing Rich Applications in the Browser
Autodesk
 
PDF
Win j svsphonegap-damyan-petev-mihail-mateev
Mihail Mateev
 
PDF
How to become a Rational Developer for IBM i Power User
Strongback Consulting
 
PPTX
Tech io spa_angularjs_20130814_v0.9.5
Ganesh Kondal
 
PPT
Android Training in Chandigarh
Arcadian Learning
 
PPTX
The future of web development write once, run everywhere with angular.js and ...
Mark Roden
 
PDF
The future of web development write once, run everywhere with angular js an...
Mark Leusink
 
PDF
Introduction to interactive data visualisation using R Shiny
anamarisaguedes
 
PDF
vue-storefront - PWA eCommerce for Magento2 MM17NYC presentation
Divante
 
PDF
The Decoupled CMS in Financial Services
Open Source Strategy Forum
 
Evolution of the SAP User Experience and Technology Stack
Victor Ionescu
 
Android development first steps
christoforosnalmpantis
 
R programming for statistics and dash board
SrinivasacharG1
 
R scripts for statistics and dashboard designs
SrinivasacharG1
 
Device Independent API design
Amrita jain
 
Droidcon 2013 automotive quality dunca_czol_garmin
Droidcon Berlin
 
Mini training- Scenario Driven Design
Betclic Everest Group Tech Team
 
Vue Storefront - Progressive Web App for Magento (1.9, 2.x) - MM18DE speech
Divante
 
Good bye Massive View Controller!
Supercharge
 
Forge - DevCon 2016: Implementing Rich Applications in the Browser
Autodesk
 
Win j svsphonegap-damyan-petev-mihail-mateev
Mihail Mateev
 
How to become a Rational Developer for IBM i Power User
Strongback Consulting
 
Tech io spa_angularjs_20130814_v0.9.5
Ganesh Kondal
 
Android Training in Chandigarh
Arcadian Learning
 
The future of web development write once, run everywhere with angular.js and ...
Mark Roden
 
The future of web development write once, run everywhere with angular js an...
Mark Leusink
 
Introduction to interactive data visualisation using R Shiny
anamarisaguedes
 
vue-storefront - PWA eCommerce for Magento2 MM17NYC presentation
Divante
 
The Decoupled CMS in Financial Services
Open Source Strategy Forum
 
Ad

Recently uploaded (8)

PDF
Call For Papers - International Journal on Natural Language Computing (IJNLC)
kevig
 
PPTX
The Intersection of Emoji and NFT. What can be the Consequences?
Refit Global
 
PPTX
Mobile Apps Helping Business Grow in 2025
Infylo Techsolutions
 
PDF
Building Smart, Scalable Solutions with Android App Development
Brancosoft Private Limited
 
PDF
💡 Digital Marketing Decoded: Mastering Online Growth Strategies for 2025 🚀
marketingaura24
 
PPT
lec2 wireless transmission exlaining.ppt
212231
 
PDF
INTERLINGUAL SYNTACTIC PARSING: AN OPTIMIZED HEAD-DRIVEN PARSING FOR ENGLISH ...
kevig
 
PPT
lect 1 Introduction.ppt11112222333344455
212231
 
Call For Papers - International Journal on Natural Language Computing (IJNLC)
kevig
 
The Intersection of Emoji and NFT. What can be the Consequences?
Refit Global
 
Mobile Apps Helping Business Grow in 2025
Infylo Techsolutions
 
Building Smart, Scalable Solutions with Android App Development
Brancosoft Private Limited
 
💡 Digital Marketing Decoded: Mastering Online Growth Strategies for 2025 🚀
marketingaura24
 
lec2 wireless transmission exlaining.ppt
212231
 
INTERLINGUAL SYNTACTIC PARSING: AN OPTIMIZED HEAD-DRIVEN PARSING FOR ENGLISH ...
kevig
 
lect 1 Introduction.ppt11112222333344455
212231
 

Android Effective UI: Tips, Tricks and Patterns

  • 1. Android Effective UI Tips, Tricks and Patterns Adham Enaya adhamenaya.com 1
  • 2. Topics • Introduction • Resources and qualifiers • Using ButterKnife Library • Model View Presenter (MVP) • Some advices adhamenaya.com 2
  • 3. Motivation • Provide and enjoyable user experience. • Change the UI depending on the device. • Improve layout performance. • Create Customized widgets. • Make the UI code maintainable and testable. adhamenaya.com 3
  • 4. Android Devices • Almost 19,000 devices(60% growth yearly) adhamenaya.com 4
  • 5. Motivation (2) How can we change the UI depending on the device ? By using Android Resources adhamenaya.com 5
  • 6. Android Recourses • Color: declares the app color pallet • Drawable: images assets • Layout: xml file declares the app layout. • Menu: xml file declares the UI menu • Integer: integer values in xml and java codes. adhamenaya.com 6
  • 7. Resources & Qualifiers • Screen Density: hdpi, mdpi … etc • Screen Size: large, small .. etc • Language: ar, en, ar-JO • Min Width: sw600dp, sw720dp • Screen Orientation: port and land • Android API level: v7, v8, v9 …etc adhamenaya.com 7
  • 8. Resources & Qualifiers/Screen Destiny • Screen Destiny: quantity pixels(dots) per inch – ldpi: ~120dpi – mdpi: ~160dpi – hdpi: ~240dpi – xhdpi: ~360dpi – xxhdpi:480dpi – xxxhdpi: ~640dpi adhamenaya.com 8
  • 9. Resources & Qualifiers/Screen Density adhamenaya.com 9
  • 10. Resources & Qualifiers/Screen Destiny adhamenaya.com 10
  • 11. Resources & Qualifiers/Screen Size • xlarge screens are at least 960dp x 720dp > 7 inch • large screens are at least 640dp x 480dp 5-7 inch • normal screens are at least 470dp x 320dp 3.0-4.7 inch • small screens are at least 426dp x 320dp 2.2-2.7 inch adhamenaya.com 11
  • 12. Resources & Qualifiers/Screen Size • Android screen resolution distribution in China. (Umeng data) adhamenaya.com 12
  • 13. How to use Qualifiers? • Create new directory in res/ folder • The name of the folder in this format: – <resources_name>-<qualifier> – Resource name: such drawable, layout … – Qualifier: such as hdpi, mdpi, land, port… adhamenaya.com 13
  • 14. Android resources example • drawable/: for every thing • drawable-en/ : for English locale • drawable-en-port/ : for English and in portrait orientation • drawable-en-notouch-12key/ : For English and in notouch devices and 12key as primary input • drawable-port-ldpi/ : for low density screen and in portrait orientation adhamenaya.com 14
  • 15. Android resources example(2) • layout-v4: API level (android 1.6) • layout- h720dp: Available height 720 • Layout-sw600dp: Smallest width 600 Same application with different layouts for each device. adhamenaya.com 15
  • 16. Using Butter Knife Library (1) • Inject Views and view events in activities and fragments. • Notation –based. By : Jake Wharton (Square). adhamenaya.com 16
  • 17. Using Butter Knife Library (2) • Using findViewById adhamenaya.com 17
  • 18. Using the Butter Knife Library (3) • Add dependency to build.gradle: – compile 'com.jakewharton:butterknife:6.1.0‘ • In the onCreate() method of the activity, before using any the views, call inject on the Butterknife object: – ButterKnife.inject(this); adhamenaya.com 18
  • 19. ButterKnife / Insatiate the view (4) • Use: – @InjectView(R.id.sample_textview); – TextView textview; • Rather than: – TextView textview; – textview = (TextView)findViewById(R.id.sample_textview); adhamenaya.com 19
  • 20. Butter Knife / View Events(5) • Use: @OnClick(R.id.sample_textview) public void showToastMessage(){ // DO SOTHING …. } adhamenaya.com 20
  • 22. What is MVP? • The MVP pattern allows separate the presentation layer(UI) from the business logic adhamenaya.com 22
  • 23. Why use MVP? • Android activities are closely coupled to both interface and data. – Such as: CursorAdapter (View)+Cursor(data) • Application to be easily extensible and maintainable. – Such as: changing the data access (from local database to web service). • Easier to test each interface alone. adhamenaya.com 23
  • 24. How to implement MVP ? • MVP architecture consists of 3 layers: – View – Presenter – Model View Presenter Model User Event Update Model Update view State Changed event adhamenaya.com 24
  • 25. MVP: VIEW • Activity, Fragment, View … • Has a reference to the Presenter • Propagates evens from UI to the Presenter. (such as onClick) • Exposes methods that controls the presentation objects. (Such as Show/Hide progress bar) adhamenaya.com 25
  • 26. MVP: PRESENTER • Middle-man Between the View and Presenter • Has reference to View and Model. • Introduce a level of abstraction to the data coming from the model, and formats it before sending it to the view (this makes the View and Model independent). • Updates the UI, the difference to the MVC. adhamenaya.com 26
  • 27. MVP: Model (Interactor) • Gateway towards the business logic. • Contains methods to for data retrival. adhamenaya.com 27
  • 28. MVP Conventions • MVP – Views: ExampleView – Listeners: ExampleListener – Presenters: ExamplePresenter • > impl: ExamplePresenterImpl – Interactors: ExampleInteractor • > impl: ExmpleInteractorImpl adhamenaya.com 28
  • 29. MVP Example Activity Presenter Network Interactor Press Login Button valiadteAccount() loginSuccess() networkSuccess() loginFailue() networkFailure() adhamenaya.com 29
  • 32. MVP vs. MVC • MVP Pattern – View is more loosely coupled to the model. The presenter is responsible for binding the model to the view. – Easier to unit test because interaction with the view is through an interface – Usually view to presenter map one to one. Complex views may have multi presenters. adhamenaya.com 32
  • 34. MVP vs. MVC • MVC Pattern – Controller are based on behaviors and can be shared across views – Can be responsible for determining which view to display 34adhamenaya.com
  • 36. Some Advices • Avoid expensive tasks on the UI thread. • Avoid code duplicity • Use themes, styles and colors properly. • Think in UI layer as isolated domain. • Write testable code and test it. • Measure the UI performance using the performance measure tools. adhamenaya.com 36