SlideShare une entreprise Scribd logo
1  sur  38
www.immobilienscout24.dewww.immobilienscout24.de
The Multi-Device Nightmare
- and how to clear the Elm Street
Android Developer Days | Ankara | 15.06.2013 | Hasan Hosgel
About me
Hasan Hosgel
Twitter: @alosdev
Github: alosdev
Google+: Hasan Hosgel
Slideshare: hosgel
developer @ ImmobilienScout24,
CO-Organizer @ GDG Berlin Android,
Organizer @ community events &
Speaker
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
Fragmentation
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
Fragmentation
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
> 3100 Android Devices
Here comes The Nightmare
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan HosgelImage source:
http://www.flickr.com/photos/boogeyman13/4553188509/
Here comes The Nightmare
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
For developers
Image source:
http://www.flickr.com/photos/boogeyman13/4553188509/
Device Classification
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan HosgelImages sources:
https://play.google.com/store/devices
Device Classification
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan HosgelImages sources:
https://play.google.com/store/devices
http://www.htc.com/de/
Device Classification
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan HosgelImages sources:
http://www.sony.de/hub/google-tv
Device Classification
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan HosgelImages Sources
https://developer.ford.com/
Resource Folders
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
You can use several qualifiers in the resource folders name for serving
the best matching resource. Most used qualifiers:
● Language (-en)
● Language & Region (-en-rUS)
● Smallest Width (-swXXXdp, e.g. –sw600dp)
● Screensize (-small, -normal, -large)
● Screen Orientation (-port, -land)
● Screen Pixel Densitiy (-mdpi, -hdpi, -xhdpi, -xxhdpi)
● Platform Version (-v11, -v13)
Resource Folders
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
If you have several resource folders, the one with the greatest
matching number qualifiers will be used. e.g. :
1. res/values/strings.xml
2. res/values-en-rUS/strings.xml
3. res/values-large/strings.xml
4. res/values-sw600dp/strings.xml
Resource Folders
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
If you have several resource folders, the one with the greatest
matching number qualifiers will be used. e.g. :
1. res/values/strings.xml
2. res/values-en-rUS/strings.xml
3. res/values-large/strings.xml
4. res/values-sw600dp/strings.xml
If two resources have the same number of matching qualifiers, the
ordering in the previous slide will rank the qualifiers.
e.g. Device configurations:
Nexus One, Turkish: 1.
Galaxy Tab 7.0 in German: 3.
Nexus 7: 4.
Images
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
● Use the different qualifiers for the screen pixel density (mdpi, hdpi,
etc.)
● If you are forced to use text on images use language and region
(en, es-rUs, en-rUS, etc.)
● Better approach is to use 9-patch drawables, which stretches
automatically depending on the content inside.
More about it: developer.android.com
● You must provide different launcher icons for Froyo, Honeycomb
and above? Use the platform version. (v4, v11, v14)
Classifications For Layouts
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
If your minimum SDK is at least platform version 13 (Honeycomb MR2)
project-folder/res/
layout/  small phones
layout-sw320dp/  other phones
layout-sw600dp/  tablets 7”
layout-sw720dp/  tablets 10”
You should also use orientation
Classifications For Layouts
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
If your minimum SDK is lower than platform version 11 (Honeycomb)
project-folder/res/
layout/  phones
layout-v11/  tablets 10”
layout-v13/  small phones
layout-sw320dp/  other phones
layout-sw600dp/  tablets 7”
layout-sw720dp/  tablets 10”
The smallest width qualifier gets automatically platform version “v13”
through the packager, for avoiding problems with the number of
matching qualifiers.
You can also use the screen size qualifier, if you want to reach small,
medium and large screens previous to Honeycomb.
Classifications In Code
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
You can read the configurations from the device.
Smarter Approach: use boolean resources
project-folder/res/values/layouts.xml
<resources>
<bool name="is_phone_small”>false</bool>
<bool name="is_phone_other">true</bool>
<bool name="is_tablet_7”>false</bool>
<bool name="is_tablet_10”>false</bool>
</resources>
Classifications In Code
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
You can read the configurations from the device.
Smarter Approach: use boolean resources
project-folder/res/values/layouts.xml
<resources>
<bool name="is_phone_small”>false</bool>
<bool name="is_phone_other">true</bool>
<bool name="is_tablet_7”>false</bool>
<bool name="is_tablet_10”>false</bool>
</resources>
Usage in code:
getResources().getBoolean(R.bool.is_phone_small)
Current Layout File Structure
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
project-folder/res/
layout/main.xml
layout-v11/main.xml
layout-v13/main.xml
layout-sw320dp/main.xml
layout-sw600dp/main.xml
layout-sw720dp/main.xml
Current Layout File Structure
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
project-folder/res/
layout/main.xml
layout-v11/main.xml
layout-v13/main.xml
layout-sw320dp/main.xml
layout-sw600dp/main.xml
layout-sw720dp/main.xml
Fixing one bug in the 10“ layout has to be done in two files.
Current Layout File Structure
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
project-folder/res/
layout/main.xml
layout-v11/main.xml
layout-v13/main.xml
layout-sw320dp/main.xml
layout-sw600dp/main.xml
layout-sw720dp/main.xml
Fixing one bug in the 10“ layout has to be done in two files.
 error prone
Resource Alias
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
1. Put your layout files in the default folder.
project-folder/res/
layout/main_phone_small.xml
layout/main_phone_other.xml
layout/main_tablet_7.xml
layout/main_tablet_10.xml
Resource Alias
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
1. Put your layout files in the default folder.
project-folder/res/
layout/main_phone_small.xml
layout/main_phone_other.xml
layout/main_tablet_7.xml
layout/main_tablet_10.xml
2. Create an item with the needed classification in the previously
defined values folder.
project-folder/res/values-sw600dp/layouts.xml
<item name=“main” type=“layout”>@layout/main_tablet7</item>
Sample Screen
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
Sample Screen
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
Use <includes>
Sample Screen
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
Use <includes>
Create custom view
Custom View
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
public class CustomView extends LinearLayout {
public CustomView(Context context, AttributeSet attrs) {
super(context, attrs);
LayoutParams lp = …
addView(createText(context, "label"), lp);
addView(createText(context, ”desc"), lp);
if (getResources().getBoolean(R.bool.is_phone_small) ||
getResources().getBoolean(R.bool.is_phone_other)) {
setOrientation(VERTICAL);
} else {
setOrientation(HORIZONTAL);
}
}
private TextView createText(Context context, String text) {
TextView textView = new TextView(context);
textView.setText(text);
return textView;
}
}
Sample Screen
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
Use <includes>
Create custom view
Sample Screen
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
Use <includes>
Create custom view
If custom view has much more
business logic and need lifecycles
 Create a Fragment
Custom XML Attribute (attrs.xml)
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
<resources>
<declare-styleable name=”CustomView">
<attr name="label" format="reference|string" />
<attr name="value" format="reference|string" />
<attr name="orientation" format="enum">
<enum name="horizontal" value="0" />
<enum name="vertical" value="1" />
</attr>
</declare-styleable>
<resources>
Custom XML Attribute (main.xml)
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
Add to root XML node
xmlns:app="http://schemas.android.com/apk/res/de.alosdev"
Usage in custom view
<de.alosdev.CustomView
android:id="@+id/customView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:label="label 1"
app:orientation="vertical"
app:value="value 1" />
Custom XML Attribute (CustomView.java)
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
public class CustomView extends LinearLayout {
static final int[] ORIENTATION = new int[] { HORIZONTAL, VERTICAL
};
public CustomView(Context context, AttributeSet attrs) {
super(context, attrs);
…
TypedArray a = context.obtainStyledAttributes(attrs,
R.styleable.CustomView);
try {
setOrientation(ORIENTATION[
a.getInt(R.styleable.CustomView_orientation, 0)]);
} finally {
a.recycle();
}
}
…
}
Custom XML Attribute (Screenshot)
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
Best Practices
which learned painfully
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
● You have already an application
Remove orientation fixation and suppressing of orientation
change from manifest to avoid long bug analyzing.
● You start from the scratch
Focus on main classification for faster time to market
But create an overall concept for better modularization
● If you support both orientations, save the instance state while
orientation changes for more responsiveness
Especially for states, need a long computation for creation.
Make the state object Parcelable for faster write & read and also
to have a smaller memory footprint
Mission Accomplished
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgelhttp://www.flickr.com/photos/ianaberle/5729561934/
Mission Accomplished
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgelhttp://www.flickr.com/photos/ianaberle/5729561934/
Q & A
Source: http://www.flickr.com/photos/21496790@N06/5065834411/ Droidcon 2013 | Mutli-Device Nightmare | Hasan Hosgel
Page 37
Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
www.immobilienscout24.dewww.immobilienscout24.de
Thanks for your attention
& we are hiring!
Contact:
Hasan Hosgel
Twitter: @alosdev
Github: alosdev
Multidevice Nightmare
Repo: https://github.com/alosdev/multidevice-nightmare-demo
SlideShare: http://de.slideshare.net/hosgel/add-2013-multidevice-nightmare

Contenu connexe

En vedette

Mobile website development Services
Mobile website development Services Mobile website development Services
Mobile website development Services Steve Verma
 
αναγωγη στη δεκαδικη κλασματικη μοναδα(1)
αναγωγη στη δεκαδικη κλασματικη μοναδα(1)αναγωγη στη δεκαδικη κλασματικη μοναδα(1)
αναγωγη στη δεκαδικη κλασματικη μοναδα(1)Nansy Tzg
 
Adapting to Climate Change in Africa's Drylands: From Research to Action
Adapting to Climate Change in Africa's Drylands: From Research to ActionAdapting to Climate Change in Africa's Drylands: From Research to Action
Adapting to Climate Change in Africa's Drylands: From Research to ActionGlobal Risk Forum GRFDavos
 
คู่มือการจัดทำแผนพัฒนาพื้นที่ระดับอำเภอและชุมชน หมู่บ้าน พร้อมแนวข้อสอบ
คู่มือการจัดทำแผนพัฒนาพื้นที่ระดับอำเภอและชุมชน หมู่บ้าน พร้อมแนวข้อสอบ คู่มือการจัดทำแผนพัฒนาพื้นที่ระดับอำเภอและชุมชน หมู่บ้าน พร้อมแนวข้อสอบ
คู่มือการจัดทำแผนพัฒนาพื้นที่ระดับอำเภอและชุมชน หมู่บ้าน พร้อมแนวข้อสอบ ประพันธ์ เวารัมย์
 
MPPL Chapter 3
MPPL Chapter 3MPPL Chapter 3
MPPL Chapter 3beiharira
 
Management visuel pour l'amélioration des activités de service, Aurore Xemar
Management visuel pour l'amélioration des activités de service, Aurore XemarManagement visuel pour l'amélioration des activités de service, Aurore Xemar
Management visuel pour l'amélioration des activités de service, Aurore XemarInstitut Lean France
 

En vedette (6)

Mobile website development Services
Mobile website development Services Mobile website development Services
Mobile website development Services
 
αναγωγη στη δεκαδικη κλασματικη μοναδα(1)
αναγωγη στη δεκαδικη κλασματικη μοναδα(1)αναγωγη στη δεκαδικη κλασματικη μοναδα(1)
αναγωγη στη δεκαδικη κλασματικη μοναδα(1)
 
Adapting to Climate Change in Africa's Drylands: From Research to Action
Adapting to Climate Change in Africa's Drylands: From Research to ActionAdapting to Climate Change in Africa's Drylands: From Research to Action
Adapting to Climate Change in Africa's Drylands: From Research to Action
 
คู่มือการจัดทำแผนพัฒนาพื้นที่ระดับอำเภอและชุมชน หมู่บ้าน พร้อมแนวข้อสอบ
คู่มือการจัดทำแผนพัฒนาพื้นที่ระดับอำเภอและชุมชน หมู่บ้าน พร้อมแนวข้อสอบ คู่มือการจัดทำแผนพัฒนาพื้นที่ระดับอำเภอและชุมชน หมู่บ้าน พร้อมแนวข้อสอบ
คู่มือการจัดทำแผนพัฒนาพื้นที่ระดับอำเภอและชุมชน หมู่บ้าน พร้อมแนวข้อสอบ
 
MPPL Chapter 3
MPPL Chapter 3MPPL Chapter 3
MPPL Chapter 3
 
Management visuel pour l'amélioration des activités de service, Aurore Xemar
Management visuel pour l'amélioration des activités de service, Aurore XemarManagement visuel pour l'amélioration des activités de service, Aurore Xemar
Management visuel pour l'amélioration des activités de service, Aurore Xemar
 

Similaire à Android Developer Days 2013 - MultiDevice Nightmare

Droidcon nl 2013 best practices to develop for different android device class...
Droidcon nl 2013 best practices to develop for different android device class...Droidcon nl 2013 best practices to develop for different android device class...
Droidcon nl 2013 best practices to develop for different android device class...Hasan Hosgel
 
Droidcon it 2014 best practices to develop for different android device class...
Droidcon it 2014 best practices to develop for different android device class...Droidcon it 2014 best practices to develop for different android device class...
Droidcon it 2014 best practices to develop for different android device class...Hasan Hosgel
 
Mtc spring 2014 best practices to develop for different android device classi...
Mtc spring 2014 best practices to develop for different android device classi...Mtc spring 2014 best practices to develop for different android device classi...
Mtc spring 2014 best practices to develop for different android device classi...Hasan Hosgel
 
Android Development project
Android Development projectAndroid Development project
Android Development projectMinhaj Kazi
 
DevFest Istanbul 2014 - Developing for the Big Screen - from Android TV to Ch...
DevFest Istanbul 2014 - Developing for the Big Screen - from Android TV to Ch...DevFest Istanbul 2014 - Developing for the Big Screen - from Android TV to Ch...
DevFest Istanbul 2014 - Developing for the Big Screen - from Android TV to Ch...Hasan Hosgel
 
Building conversational experiences with Actions on Google
Building conversational experiences with Actions on GoogleBuilding conversational experiences with Actions on Google
Building conversational experiences with Actions on GoogleIdo Green
 
Android - Open Source Bridge 2011
Android - Open Source Bridge 2011Android - Open Source Bridge 2011
Android - Open Source Bridge 2011sullis
 
Building Conversational Experiences with Actions on Google
Building Conversational Experiences with Actions on Google Building Conversational Experiences with Actions on Google
Building Conversational Experiences with Actions on Google Peter Friese
 
Beginning Native Android Apps
Beginning Native Android AppsBeginning Native Android Apps
Beginning Native Android AppsGil Irizarry
 
Android - From Zero to Hero @ DEVit 2017
Android - From Zero to Hero @ DEVit 2017Android - From Zero to Hero @ DEVit 2017
Android - From Zero to Hero @ DEVit 2017Ivo Neskovic
 
Android Embedded - Smart Hubs als Schaltzentrale des IoT
Android Embedded - Smart Hubs als Schaltzentrale des IoTAndroid Embedded - Smart Hubs als Schaltzentrale des IoT
Android Embedded - Smart Hubs als Schaltzentrale des IoTinovex GmbH
 
Extending Spring MVC with Spring Mobile and JavaScript
Extending Spring MVC with Spring Mobile and JavaScriptExtending Spring MVC with Spring Mobile and JavaScript
Extending Spring MVC with Spring Mobile and JavaScriptRoy Clarkson
 
[Ultracode Munich #4] Short introduction to the new Android build system incl...
[Ultracode Munich #4] Short introduction to the new Android build system incl...[Ultracode Munich #4] Short introduction to the new Android build system incl...
[Ultracode Munich #4] Short introduction to the new Android build system incl...BeMyApp
 
Drupal as a Framework for Mobile Development
Drupal as a Framework for Mobile DevelopmentDrupal as a Framework for Mobile Development
Drupal as a Framework for Mobile DevelopmentRachel Jaro
 
Reaching out from ADF Mobile (ODTUG KScope 2014)
Reaching out from ADF Mobile (ODTUG KScope 2014)Reaching out from ADF Mobile (ODTUG KScope 2014)
Reaching out from ADF Mobile (ODTUG KScope 2014)Luc Bors
 
Angular js mobile jsday 2014 - Verona 14 may
Angular js mobile   jsday 2014 - Verona 14 mayAngular js mobile   jsday 2014 - Verona 14 may
Angular js mobile jsday 2014 - Verona 14 mayLuciano Amodio
 

Similaire à Android Developer Days 2013 - MultiDevice Nightmare (20)

Droidcon nl 2013 best practices to develop for different android device class...
Droidcon nl 2013 best practices to develop for different android device class...Droidcon nl 2013 best practices to develop for different android device class...
Droidcon nl 2013 best practices to develop for different android device class...
 
Droidcon it 2014 best practices to develop for different android device class...
Droidcon it 2014 best practices to develop for different android device class...Droidcon it 2014 best practices to develop for different android device class...
Droidcon it 2014 best practices to develop for different android device class...
 
Mtc spring 2014 best practices to develop for different android device classi...
Mtc spring 2014 best practices to develop for different android device classi...Mtc spring 2014 best practices to develop for different android device classi...
Mtc spring 2014 best practices to develop for different android device classi...
 
Android Development project
Android Development projectAndroid Development project
Android Development project
 
DevFest Istanbul 2014 - Developing for the Big Screen - from Android TV to Ch...
DevFest Istanbul 2014 - Developing for the Big Screen - from Android TV to Ch...DevFest Istanbul 2014 - Developing for the Big Screen - from Android TV to Ch...
DevFest Istanbul 2014 - Developing for the Big Screen - from Android TV to Ch...
 
Android TCJUG
Android TCJUGAndroid TCJUG
Android TCJUG
 
Android Minnebar
Android MinnebarAndroid Minnebar
Android Minnebar
 
Building conversational experiences with Actions on Google
Building conversational experiences with Actions on GoogleBuilding conversational experiences with Actions on Google
Building conversational experiences with Actions on Google
 
Android - Open Source Bridge 2011
Android - Open Source Bridge 2011Android - Open Source Bridge 2011
Android - Open Source Bridge 2011
 
Building Conversational Experiences with Actions on Google
Building Conversational Experiences with Actions on Google Building Conversational Experiences with Actions on Google
Building Conversational Experiences with Actions on Google
 
Beginning Native Android Apps
Beginning Native Android AppsBeginning Native Android Apps
Beginning Native Android Apps
 
Android - From Zero to Hero @ DEVit 2017
Android - From Zero to Hero @ DEVit 2017Android - From Zero to Hero @ DEVit 2017
Android - From Zero to Hero @ DEVit 2017
 
Android Embedded - Smart Hubs als Schaltzentrale des IoT
Android Embedded - Smart Hubs als Schaltzentrale des IoTAndroid Embedded - Smart Hubs als Schaltzentrale des IoT
Android Embedded - Smart Hubs als Schaltzentrale des IoT
 
Android Intro
Android IntroAndroid Intro
Android Intro
 
Extending Spring MVC with Spring Mobile and JavaScript
Extending Spring MVC with Spring Mobile and JavaScriptExtending Spring MVC with Spring Mobile and JavaScript
Extending Spring MVC with Spring Mobile and JavaScript
 
[Ultracode Munich #4] Short introduction to the new Android build system incl...
[Ultracode Munich #4] Short introduction to the new Android build system incl...[Ultracode Munich #4] Short introduction to the new Android build system incl...
[Ultracode Munich #4] Short introduction to the new Android build system incl...
 
Supercharge your ui
Supercharge your uiSupercharge your ui
Supercharge your ui
 
Drupal as a Framework for Mobile Development
Drupal as a Framework for Mobile DevelopmentDrupal as a Framework for Mobile Development
Drupal as a Framework for Mobile Development
 
Reaching out from ADF Mobile (ODTUG KScope 2014)
Reaching out from ADF Mobile (ODTUG KScope 2014)Reaching out from ADF Mobile (ODTUG KScope 2014)
Reaching out from ADF Mobile (ODTUG KScope 2014)
 
Angular js mobile jsday 2014 - Verona 14 may
Angular js mobile   jsday 2014 - Verona 14 mayAngular js mobile   jsday 2014 - Verona 14 may
Angular js mobile jsday 2014 - Verona 14 may
 

Plus de Hasan Hosgel

Android Developer Days 2014 How second screen can enhance your app
Android Developer Days 2014 How second screen can enhance your appAndroid Developer Days 2014 How second screen can enhance your app
Android Developer Days 2014 How second screen can enhance your appHasan Hosgel
 
Android bootcamp 2013 Lists & Adapter
Android bootcamp 2013 Lists & AdapterAndroid bootcamp 2013 Lists & Adapter
Android bootcamp 2013 Lists & AdapterHasan Hosgel
 
Customer's Choice @ Moosecon 2013
Customer's Choice @ Moosecon 2013Customer's Choice @ Moosecon 2013
Customer's Choice @ Moosecon 2013Hasan Hosgel
 
Customer&rsquo;s Choice @ GDG Android Berlin on January meetup
Customer&rsquo;s Choice @ GDG Android Berlin on January meetupCustomer&rsquo;s Choice @ GDG Android Berlin on January meetup
Customer&rsquo;s Choice @ GDG Android Berlin on January meetupHasan Hosgel
 
Continuously Break The Android
Continuously Break The AndroidContinuously Break The Android
Continuously Break The AndroidHasan Hosgel
 
Coexisting of Android & Robots
Coexisting of Android & RobotsCoexisting of Android & Robots
Coexisting of Android & RobotsHasan Hosgel
 
Mobile Development across Different Platforms @ Immobilienscout24
Mobile Development across Different Platforms @ Immobilienscout24Mobile Development across Different Platforms @ Immobilienscout24
Mobile Development across Different Platforms @ Immobilienscout24Hasan Hosgel
 

Plus de Hasan Hosgel (7)

Android Developer Days 2014 How second screen can enhance your app
Android Developer Days 2014 How second screen can enhance your appAndroid Developer Days 2014 How second screen can enhance your app
Android Developer Days 2014 How second screen can enhance your app
 
Android bootcamp 2013 Lists & Adapter
Android bootcamp 2013 Lists & AdapterAndroid bootcamp 2013 Lists & Adapter
Android bootcamp 2013 Lists & Adapter
 
Customer's Choice @ Moosecon 2013
Customer's Choice @ Moosecon 2013Customer's Choice @ Moosecon 2013
Customer's Choice @ Moosecon 2013
 
Customer&rsquo;s Choice @ GDG Android Berlin on January meetup
Customer&rsquo;s Choice @ GDG Android Berlin on January meetupCustomer&rsquo;s Choice @ GDG Android Berlin on January meetup
Customer&rsquo;s Choice @ GDG Android Berlin on January meetup
 
Continuously Break The Android
Continuously Break The AndroidContinuously Break The Android
Continuously Break The Android
 
Coexisting of Android & Robots
Coexisting of Android & RobotsCoexisting of Android & Robots
Coexisting of Android & Robots
 
Mobile Development across Different Platforms @ Immobilienscout24
Mobile Development across Different Platforms @ Immobilienscout24Mobile Development across Different Platforms @ Immobilienscout24
Mobile Development across Different Platforms @ Immobilienscout24
 

Dernier

EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfOverkill Security
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 

Dernier (20)

EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 

Android Developer Days 2013 - MultiDevice Nightmare

  • 1. www.immobilienscout24.dewww.immobilienscout24.de The Multi-Device Nightmare - and how to clear the Elm Street Android Developer Days | Ankara | 15.06.2013 | Hasan Hosgel
  • 2. About me Hasan Hosgel Twitter: @alosdev Github: alosdev Google+: Hasan Hosgel Slideshare: hosgel developer @ ImmobilienScout24, CO-Organizer @ GDG Berlin Android, Organizer @ community events & Speaker Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
  • 3. Fragmentation Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
  • 4. Fragmentation Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel > 3100 Android Devices
  • 5. Here comes The Nightmare Android Developer Days 2013 | Mutli-Device Nightmare | Hasan HosgelImage source: http://www.flickr.com/photos/boogeyman13/4553188509/
  • 6. Here comes The Nightmare Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel For developers Image source: http://www.flickr.com/photos/boogeyman13/4553188509/
  • 7. Device Classification Android Developer Days 2013 | Mutli-Device Nightmare | Hasan HosgelImages sources: https://play.google.com/store/devices
  • 8. Device Classification Android Developer Days 2013 | Mutli-Device Nightmare | Hasan HosgelImages sources: https://play.google.com/store/devices http://www.htc.com/de/
  • 9. Device Classification Android Developer Days 2013 | Mutli-Device Nightmare | Hasan HosgelImages sources: http://www.sony.de/hub/google-tv
  • 10. Device Classification Android Developer Days 2013 | Mutli-Device Nightmare | Hasan HosgelImages Sources https://developer.ford.com/
  • 11. Resource Folders Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel You can use several qualifiers in the resource folders name for serving the best matching resource. Most used qualifiers: ● Language (-en) ● Language & Region (-en-rUS) ● Smallest Width (-swXXXdp, e.g. –sw600dp) ● Screensize (-small, -normal, -large) ● Screen Orientation (-port, -land) ● Screen Pixel Densitiy (-mdpi, -hdpi, -xhdpi, -xxhdpi) ● Platform Version (-v11, -v13)
  • 12. Resource Folders Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel If you have several resource folders, the one with the greatest matching number qualifiers will be used. e.g. : 1. res/values/strings.xml 2. res/values-en-rUS/strings.xml 3. res/values-large/strings.xml 4. res/values-sw600dp/strings.xml
  • 13. Resource Folders Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel If you have several resource folders, the one with the greatest matching number qualifiers will be used. e.g. : 1. res/values/strings.xml 2. res/values-en-rUS/strings.xml 3. res/values-large/strings.xml 4. res/values-sw600dp/strings.xml If two resources have the same number of matching qualifiers, the ordering in the previous slide will rank the qualifiers. e.g. Device configurations: Nexus One, Turkish: 1. Galaxy Tab 7.0 in German: 3. Nexus 7: 4.
  • 14. Images Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel ● Use the different qualifiers for the screen pixel density (mdpi, hdpi, etc.) ● If you are forced to use text on images use language and region (en, es-rUs, en-rUS, etc.) ● Better approach is to use 9-patch drawables, which stretches automatically depending on the content inside. More about it: developer.android.com ● You must provide different launcher icons for Froyo, Honeycomb and above? Use the platform version. (v4, v11, v14)
  • 15. Classifications For Layouts Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel If your minimum SDK is at least platform version 13 (Honeycomb MR2) project-folder/res/ layout/  small phones layout-sw320dp/  other phones layout-sw600dp/  tablets 7” layout-sw720dp/  tablets 10” You should also use orientation
  • 16. Classifications For Layouts Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel If your minimum SDK is lower than platform version 11 (Honeycomb) project-folder/res/ layout/  phones layout-v11/  tablets 10” layout-v13/  small phones layout-sw320dp/  other phones layout-sw600dp/  tablets 7” layout-sw720dp/  tablets 10” The smallest width qualifier gets automatically platform version “v13” through the packager, for avoiding problems with the number of matching qualifiers. You can also use the screen size qualifier, if you want to reach small, medium and large screens previous to Honeycomb.
  • 17. Classifications In Code Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel You can read the configurations from the device. Smarter Approach: use boolean resources project-folder/res/values/layouts.xml <resources> <bool name="is_phone_small”>false</bool> <bool name="is_phone_other">true</bool> <bool name="is_tablet_7”>false</bool> <bool name="is_tablet_10”>false</bool> </resources>
  • 18. Classifications In Code Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel You can read the configurations from the device. Smarter Approach: use boolean resources project-folder/res/values/layouts.xml <resources> <bool name="is_phone_small”>false</bool> <bool name="is_phone_other">true</bool> <bool name="is_tablet_7”>false</bool> <bool name="is_tablet_10”>false</bool> </resources> Usage in code: getResources().getBoolean(R.bool.is_phone_small)
  • 19. Current Layout File Structure Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel project-folder/res/ layout/main.xml layout-v11/main.xml layout-v13/main.xml layout-sw320dp/main.xml layout-sw600dp/main.xml layout-sw720dp/main.xml
  • 20. Current Layout File Structure Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel project-folder/res/ layout/main.xml layout-v11/main.xml layout-v13/main.xml layout-sw320dp/main.xml layout-sw600dp/main.xml layout-sw720dp/main.xml Fixing one bug in the 10“ layout has to be done in two files.
  • 21. Current Layout File Structure Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel project-folder/res/ layout/main.xml layout-v11/main.xml layout-v13/main.xml layout-sw320dp/main.xml layout-sw600dp/main.xml layout-sw720dp/main.xml Fixing one bug in the 10“ layout has to be done in two files.  error prone
  • 22. Resource Alias Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel 1. Put your layout files in the default folder. project-folder/res/ layout/main_phone_small.xml layout/main_phone_other.xml layout/main_tablet_7.xml layout/main_tablet_10.xml
  • 23. Resource Alias Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel 1. Put your layout files in the default folder. project-folder/res/ layout/main_phone_small.xml layout/main_phone_other.xml layout/main_tablet_7.xml layout/main_tablet_10.xml 2. Create an item with the needed classification in the previously defined values folder. project-folder/res/values-sw600dp/layouts.xml <item name=“main” type=“layout”>@layout/main_tablet7</item>
  • 24. Sample Screen Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
  • 25. Sample Screen Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel Use <includes>
  • 26. Sample Screen Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel Use <includes> Create custom view
  • 27. Custom View Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel public class CustomView extends LinearLayout { public CustomView(Context context, AttributeSet attrs) { super(context, attrs); LayoutParams lp = … addView(createText(context, "label"), lp); addView(createText(context, ”desc"), lp); if (getResources().getBoolean(R.bool.is_phone_small) || getResources().getBoolean(R.bool.is_phone_other)) { setOrientation(VERTICAL); } else { setOrientation(HORIZONTAL); } } private TextView createText(Context context, String text) { TextView textView = new TextView(context); textView.setText(text); return textView; } }
  • 28. Sample Screen Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel Use <includes> Create custom view
  • 29. Sample Screen Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel Use <includes> Create custom view If custom view has much more business logic and need lifecycles  Create a Fragment
  • 30. Custom XML Attribute (attrs.xml) Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel <resources> <declare-styleable name=”CustomView"> <attr name="label" format="reference|string" /> <attr name="value" format="reference|string" /> <attr name="orientation" format="enum"> <enum name="horizontal" value="0" /> <enum name="vertical" value="1" /> </attr> </declare-styleable> <resources>
  • 31. Custom XML Attribute (main.xml) Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel Add to root XML node xmlns:app="http://schemas.android.com/apk/res/de.alosdev" Usage in custom view <de.alosdev.CustomView android:id="@+id/customView" android:layout_width="wrap_content" android:layout_height="wrap_content" app:label="label 1" app:orientation="vertical" app:value="value 1" />
  • 32. Custom XML Attribute (CustomView.java) Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel public class CustomView extends LinearLayout { static final int[] ORIENTATION = new int[] { HORIZONTAL, VERTICAL }; public CustomView(Context context, AttributeSet attrs) { super(context, attrs); … TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CustomView); try { setOrientation(ORIENTATION[ a.getInt(R.styleable.CustomView_orientation, 0)]); } finally { a.recycle(); } } … }
  • 33. Custom XML Attribute (Screenshot) Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
  • 34. Best Practices which learned painfully Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel ● You have already an application Remove orientation fixation and suppressing of orientation change from manifest to avoid long bug analyzing. ● You start from the scratch Focus on main classification for faster time to market But create an overall concept for better modularization ● If you support both orientations, save the instance state while orientation changes for more responsiveness Especially for states, need a long computation for creation. Make the state object Parcelable for faster write & read and also to have a smaller memory footprint
  • 35. Mission Accomplished Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgelhttp://www.flickr.com/photos/ianaberle/5729561934/
  • 36. Mission Accomplished Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgelhttp://www.flickr.com/photos/ianaberle/5729561934/
  • 37. Q & A Source: http://www.flickr.com/photos/21496790@N06/5065834411/ Droidcon 2013 | Mutli-Device Nightmare | Hasan Hosgel Page 37 Android Developer Days 2013 | Mutli-Device Nightmare | Hasan Hosgel
  • 38. www.immobilienscout24.dewww.immobilienscout24.de Thanks for your attention & we are hiring! Contact: Hasan Hosgel Twitter: @alosdev Github: alosdev Multidevice Nightmare Repo: https://github.com/alosdev/multidevice-nightmare-demo SlideShare: http://de.slideshare.net/hosgel/add-2013-multidevice-nightmare