bust the android fragmentation myth
DESCRIPTION
Designers and developers have been afraid of the variety of Android flavors for way too long. Android borrows a lot of concept from the web, and we can use the same techniques to cater to the different OS versions and form factors. Be responsive. Forget about absolute coordinates. Embrace the relative, use resource folders to differentiate among screen sizes, much like CSS media queries. Be progressive. Take advantage of the latest Android functionalities, but gracefully fall back to the basics when you are on older OS versions. Remember the days when not all browsers have javascript?TRANSCRIPT
![Page 1: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/1.jpg)
Bust the Android Fragmentation Myth
Chiu-Ki Chan@chiuki
![Page 2: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/2.jpg)
@chiuki@chiuki
So many devices!
![Page 3: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/3.jpg)
@chiuki@chiuki
Infinite screen sizes!
![Page 4: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/4.jpg)
@chiuki@chiuki
Responsive+
Progressive
![Page 5: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/5.jpg)
Hello World
![Page 6: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/6.jpg)
@chiuki
![Page 7: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/7.jpg)
@chiuki
![Page 8: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/8.jpg)
@chiuki
![Page 9: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/9.jpg)
@chiuki
![Page 10: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/10.jpg)
@chiuki
![Page 11: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/11.jpg)
@chiuki
![Page 12: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/12.jpg)
@chiuki
![Page 13: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/13.jpg)
Declarative Layout
![Page 14: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/14.jpg)
@chiuki
![Page 15: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/15.jpg)
@chiuki
![Page 16: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/16.jpg)
@chiuki
(x,y)
![Page 17: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/17.jpg)
@chiuki
(x,y)
![Page 18: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/18.jpg)
@chiuki
Center
![Page 19: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/19.jpg)
@chiuki@chiuki
Center<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="@string/start" />
![Page 20: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/20.jpg)
@chiuki
![Page 21: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/21.jpg)
@chiuki@chiuki
Proportional Layout<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ImageView android:id="@+id/image1" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /> <ImageView android:id="@+id/image2" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /></LinearLayout>
![Page 22: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/22.jpg)
@chiuki
![Page 23: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/23.jpg)
@chiuki
Divider
![Page 24: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/24.jpg)
@chiuki@chiuki
Divider<LinearLayout> <ImageView android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /> <View android:layout_width="match_parent" android:layout_height="1dp" android:background="@android:color/black" /> <ImageView android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /></LinearLayout>
![Page 25: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/25.jpg)
@chiuki@chiuki
Divider<LinearLayout> <ImageView android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /> <View android:layout_width="match_parent" android:layout_height="1dp" android:background="@android:color/black" /> <ImageView android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /></LinearLayout>
![Page 26: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/26.jpg)
@chiuki
dp
![Page 27: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/27.jpg)
@chiuki
dpDensity-independent pixel
![Page 28: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/28.jpg)
@chiuki
![Page 29: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/29.jpg)
@chiuki
![Page 30: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/30.jpg)
@chiuki@chiuki
res/layout-land<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <ImageView android:id="@+id/image1" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" /> <ImageView android:id="@+id/image2" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" /></LinearLayout>
![Page 31: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/31.jpg)
@chiuki
![Page 32: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/32.jpg)
Resource Folders
![Page 33: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/33.jpg)
@chiuki@chiuki
Resource Folders
Type Variation
layoutvalues
drawablemenu
Language & Region: en, fr, fr-rCAScreen size: small, large, xlargeScreen orientation: port, landScreen density: ldpi, mdpi, hdpi, xhdpi, nodpi, tvdpiPlatform version: v4, v11, v14UI mode: car, desk, television, appliance
http://developer.android.com/guide/topics/resources/providing-resources.html
![Page 34: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/34.jpg)
@chiuki@chiuki
Resource Folders
Type Variation
layoutvalues
drawablemenu
Language & Region: en, fr, fr-rCAScreen size: small, large, xlargeScreen orientation: port, landScreen density: ldpi, mdpi, hdpi, xhdpi, nodpi, tvdpiPlatform version: v4, v11, v14UI mode: car, desk, television, appliance
http://developer.android.com/guide/topics/resources/providing-resources.html
res/layout-land/activity_main.xml
![Page 35: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/35.jpg)
@chiuki@chiuki
Resource Folders
Type Variation
layoutvalues
drawablemenu
Language & Region: en, fr, fr-rCAScreen size: small, large, xlargeScreen orientation: port, landScreen density: ldpi, mdpi, hdpi, xhdpi, nodpi, tvdpiPlatform version: v4, v11, v14UI mode: car, desk, television, appliance
http://developer.android.com/guide/topics/resources/providing-resources.html
res/drawable-hdpi/ic_launcher.png
![Page 36: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/36.jpg)
@chiuki@chiuki
Resource Folders
Type Variation
layoutvalues
drawablemenu
Language & Region: en, fr, fr-rCAScreen size: small, large, xlargeScreen orientation: port, landScreen density: ldpi, mdpi, hdpi, xhdpi, nodpi, tvdpiPlatform version: v4, v11, v14UI mode: car, desk, television, appliance
http://developer.android.com/guide/topics/resources/providing-resources.html
res/drawable-large-land/splash.png
![Page 37: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/37.jpg)
@chiuki
res/drawable-large-land/splash.png
![Page 38: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/38.jpg)
@chiuki
res/drawable/splash.xml
![Page 39: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/39.jpg)
@chiuki
res/drawable/splash.xml
![Page 40: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/40.jpg)
XML drawable
![Page 41: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/41.jpg)
@chiuki@chiuki
XML shape
<shape android:shape="rectangle" > <gradient android:startColor="#063" android:endColor="#030" android:angle="270" /></shape>
![Page 42: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/42.jpg)
@chiuki@chiuki
Gradient
![Page 43: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/43.jpg)
@chiuki@chiuki
Gradient
![Page 44: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/44.jpg)
@chiuki@chiuki
Pattern
![Page 45: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/45.jpg)
@chiuki@chiuki
Tiles
![Page 46: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/46.jpg)
@chiuki@chiuki
Tiles
![Page 47: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/47.jpg)
@chiuki@chiuki
Tiling background<bitmap android:src="@drawable/tile" android:tileMode="repeat" android:dither="true" />
res/drawable/background.xml
![Page 48: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/48.jpg)
@chiuki@chiuki
Tiling background<bitmap android:src="@drawable/tile" android:tileMode="repeat" android:dither="true" />
res/drawable/background.xml
tile.png
![Page 49: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/49.jpg)
@chiuki@chiuki
Tiling background<bitmap android:src="@drawable/tile" android:tileMode="repeat" android:dither="true" />
res/drawable/background.xml
<View android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/background" />
res/layout/activity_main.xml
![Page 50: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/50.jpg)
@chiuki@chiuki
Tile mode
clampReplicates the edge color
repeatRepeats the bitmap in both direction
mirrorRepeats with alternating mirror images
![Page 51: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/51.jpg)
@chiuki@chiuki
GridView
![Page 52: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/52.jpg)
@chiuki@chiuki
Auto fit columns<GridView android:layout_width="match_parent" android:layout_height="match_parent" android:numColumns="auto_fit" android:columnWidth="@dimen/workbook_column_width" android:padding="@dimen/workbook_padding" android:horizontalSpacing="@dimen/workbook_spacing" android:verticalSpacing="@dimen/workbook_spacing" android:scrollbarStyle="outsideOverlay" />
![Page 53: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/53.jpg)
@chiuki@chiuki
Auto fit columns<GridView android:layout_width="match_parent" android:layout_height="match_parent" android:numColumns="auto_fit" android:columnWidth="@dimen/workbook_column_width" android:padding="@dimen/workbook_padding" android:horizontalSpacing="@dimen/workbook_spacing" android:verticalSpacing="@dimen/workbook_spacing" android:scrollbarStyle="outsideOverlay" />
![Page 54: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/54.jpg)
@chiuki@chiuki
Auto fit columns<GridView android:layout_width="match_parent" android:layout_height="match_parent" android:numColumns="auto_fit" android:columnWidth="@dimen/workbook_column_width" android:padding="@dimen/workbook_padding" android:horizontalSpacing="@dimen/workbook_spacing" android:verticalSpacing="@dimen/workbook_spacing" android:scrollbarStyle="outsideOverlay" />
![Page 55: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/55.jpg)
@chiuki@chiuki
dimen<resources> <dimen name="workbook_padding">8dp</dimen> <dimen name="workbook_spacing">12dp</dimen> <dimen name="workbook_column_width">120dp</dimen><resources>
res/values/dimens.xml
<resources> <dimen name="workbook_padding">32dp</dimen> <dimen name="workbook_spacing">18dp</dimen> <dimen name="workbook_column_width">180dp</dimen><resources>
res/values-large/dimens.xml
![Page 56: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/56.jpg)
@chiuki@chiuki
7-inch
![Page 57: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/57.jpg)
@chiuki@chiuki
Phone
![Page 58: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/58.jpg)
Progressive
![Page 59: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/59.jpg)
@chiuki@chiuki
Resource Folders
Type Variation
layoutvalues
drawablemenu
Language & Region: en, fr, fr-rCAScreen size: small, large, xlargeScreen orientation: port, landScreen density: ldpi, mdpi, hdpi, xhdpi, nodpi, tvdpiPlatform version: v4, v11, v14UI mode: car, desk, television, appliance
http://developer.android.com/guide/topics/resources/providing-resources.html
![Page 60: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/60.jpg)
@chiuki@chiuki
Resource Folders
Type Variation
layoutvalues
drawablemenu
Language & Region: en, fr, fr-rCAScreen size: small, large, xlargeScreen orientation: port, landScreen density: ldpi, mdpi, hdpi, xhdpi, nodpi, tvdpiPlatform version: v4, v11, v14UI mode: car, desk, television, appliance
http://developer.android.com/guide/topics/resources/providing-resources.html
![Page 61: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/61.jpg)
@chiuki@chiuki
Toggle button
![Page 62: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/62.jpg)
@chiuki@chiuki
layout-v14
<ToggleButton android:layout_width="wrap_content" android:layout_height="wrap_content" />
res/layout/compound_button.xml
<Switch android:layout_width="wrap_content" android:layout_height="wrap_content" />
res/layout-v14/compound_button.xml
![Page 63: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/63.jpg)
@chiuki@chiuki
Include<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <include android:id="@+id/turbo" layout="@layout/compound_button" /> <include android:id="@+id/reset" layout="@layout/compound_button" /></LinearLayout>
![Page 64: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/64.jpg)
@chiuki@chiuki
Cast to superclassCompoundButton turbo = (CompoundButton) findViewById(R.id.turbo);if (!turbo.isChecked()) { // Slow down the computer}
![Page 65: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/65.jpg)
@chiuki@chiuki
API level
![Page 66: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/66.jpg)
@chiuki@chiuki
Detect API level
android.os.Build.VERSION.SDKString, available from API level 1
android.os.Build.VERSION.SDK_INTint, available from API level 4
![Page 67: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/67.jpg)
@chiuki@chiuki
Progressive
// Default valueint heapSize = 16;
// Detect OS versionint sdk = Integer.parseInt(Build.VERSION.SDK);
// Progressive enhancement for newer devicesif (sdk >= Build.VERSION_CODES_ECLAIR) { // Static helper for API level 4 and below heapSize = HeapSizeGetter.getHeapSize(this);}
![Page 68: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/68.jpg)
@chiuki@chiuki
Static helperpublic abstract class HeapSizeGetter { public static int getHeapSize(Context context) { ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); return activityManager.getMemoryClass(); }}
![Page 69: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/69.jpg)
@chiuki@chiuki
Progressive
// Default valueint heapSize = 16;
// Detect OS versionint sdk = Integer.parseInt(Build.VERSION.SDK);
// Progressive enhancement for newer devicesif (sdk >= Build.VERSION_CODES_ECLAIR) { // Static helper for API level 4 and below heapSize = HeapSizeGetter.getHeapSize(this);}
![Page 70: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/70.jpg)
@chiuki@chiuki
Support libraries
Ship new functionality with your app!
![Page 71: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/71.jpg)
@chiuki
Official Support Library
Fragment
TaskStackBuilder
LruCache
ViewPager
DrawerLayoutSlidingPaneLayout
Loader
![Page 72: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/72.jpg)
@chiuki
Community Support Libraries
• Action Bar Sherlock
• View Pager Indicator
• Nine Old Android
• Holo Everywhere
![Page 73: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/73.jpg)
@chiuki@chiuki
View Pager Indicator
![Page 74: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/74.jpg)
Summary
![Page 75: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/75.jpg)
@chiuki@chiuki
SummaryResponsive layoutDeclarative layoutDensity-independent pixels (dp)Resource foldersXML drawables
Progressive functionalityResource foldersVersion checkSupport libraries
![Page 76: Bust the Android Fragmentation Myth](https://reader034.vdocuments.site/reader034/viewer/2022051515/54c82d6b4a7959584c8b459a/html5/thumbnails/76.jpg)
@chiuki@chiuki
Thank you!
Learn morehttp://pluralsight.com/courses/android-layout-fundamentalshttp://is.gd/FluidAndroidLayoutshttp://is.gd/BeautifulAndroid
Stay in touchhttp://eepurl.com/lR5uDhttp://blog.sqisland.comhttp://twitter.com/chiuki