deep dive xamarin.android
Post on 06-May-2015
Embed Size (px)
DESCRIPTIONMy presentation from St. Louis Days of .NET that covers the 20% of concepts that helps you get through the 80% of your Android app development with Xamarin.Android.
- 1.EEPER DIVE INTO XAMARIN.ANDBen Bishop firstname.lastname@example.org
2. for code/slides... @benjamminstl @rendrstl 3. Who Am i? My name is Ben Bishop (Twitter: @benjamminstl) I grew up in a small rural town of Indiana Went to Purdue University Now lives in Saint Louis Been independent for 4+ years Worked at an agency for 5 years, 1 year at TMG 4. my new company http://rendr.io 5. WHAT IS A XAMARIN?The best damn mobile team, building the best damn mobile platform. 6. What is Mono? Mono 1.0 was released on June 30, 2004The Mono runtime contains a code execution engine that translates ECMA CIL byte codes into native code and supports a number of processors: ARM, MIPS SPARC, PowerPC, S390 , x86, x86-64 and IA-64 for 64-bit modes.Also has support for LLVMRuns on Linux, OSX, Windows, PS3, XBox 360, Wii 7. How does Mono Work? Xamarin compiles your app to a native binary, not cross-compiled, and not interpreted. 8. ART (Android RunTime) is an experimental runtime that could replace Dalvik. ART uses Ahead of Time compilation instead of JIT (like iOS) 9. Code Structure By only having to write core code once, more time can be spent tuning the UI per platform. 10. must have components Components that keep you from having to write platform specific code. 11. xamarin.mobile A component that helps abstract your code for location, photos, and contacts across all platforms. 12. Xamarin.Social A component that helps abstract your code for App.Net, Twitter, Facebook, and Flickr 13. xamarin.auth Makes OAuth suck less. 14. Data RestSharp, SQLite.NET, and JSON.net help you store and retrieve data for your app. 15. Android components Google Play Services allows your app to interface with the PlayStore. Android support helps make your Android app backwards compatible. 16. Frameworks https://github.com/MvvmCross/MvvmCross https://github.com/benbishop/MonkeyArms 17. anatomy of an Android app 18. Android Manifest.xml 19. Edit App Name & Package, Icon,Version #, Min and Target Android SDKs, Permissions 20. specify supported screenshttp://developer.android.com/guide/topics/manifest/supports-scre 21. Pro tip: need for speedYou can specify hardware acceleration for the app or for specific activities. http://developer.android.com/guide/topics/graphics/hardware-acce 22. More activity optionshttp://developer.android.com/guide/topics/manifest/activity-el 23. Activities 24. Activity Lifecycle Lifecycle 25. Activity Lifecycle Lifecycle 26. Activity Lifecycle Lifecycle 27. lifecycle in use 28. another exampleOnResume and OnPause are good places to do assignment and release. 29. declaring activity behaviorIn this case, InitialActivity is our splash/loading screen. 30. layouts 31. Anatomy of a layout 32. includes 33. layouts for orientationsBy creating a directory layout-land, Activities will use this as content when orientation changes. http://docs.xamarin.com/guides/android/application_fundamentals 34. layouts for screen sizesRelying on naming conventions you can specify layouts to be used for screen widths. layout-large is for Android apps below API-13, layout-swXXXdp is for 13 and above. 35. How layouts are connected to your code 36. Strings.xml 37. How to connect strings.xml to your codeYou can link via layout xml or use GetString from your Activity. 38. string arrayThis can be used as a data provider for a spinner. 39. localizationMore folder name magic! 40. More value resource types Bool XML resource that carries a boolean value. Color XML resource that carries a color value. Dimension XML resource that carries a dimension value. Integer XML resource that carries an integer value. Integer Array XML resource that provides an array of integers. Typed Array XML resource that provides a TypedArray (which you can use for an array of drawables). 41. Style.xml 42. declare reusable styles 43. Units of measure pxPixels - corresponds to actual pixels on the screen.inInches - based on the physical size of the screen.mmMillimeters - based on the physical size of the screen.ptPoints - 1/72 of an inch based on the physical size of the screen.dpDensity-independent Pixels - an abstract unit that is based on the physical density of the screen. These units are relative to a 160 dpi screen, so one dp is one pixel on a 160 dpi screen. The ratio of dp-to-pixel will change with the screen density, but not necessarily in direct proportion. Note: The compiler accepts both "dip" and "dp", though "dp" is more consistent with "sp".spScale-independent Pixels - this is like the dp unit, but it is also scaled by the user's font size preference. It is recommend you use this unit when specifying font sizes, so they will be adjusted for both the screen density and user's preference. 44. Connect style to view 45. Drawables 46. Using a PNG PNGS FOR STATES 47. vector drawable 48. alternative drawablesUsing folder naming conventions will tell Android what version of the drawable to use 49. MainApplication 50. BOOTSTRAP/INITClass will be instantiated on app startup. 51. sending intents 52. receiving intents 53. simple listview listview 54. Create and assign adapter 55. Setup list of data. 56. Assign an adapter 57. In our Adapter, we collapse unused TextViews 58. Fragments Android 3.0+ 59. Set layout of Activity 60. init tab fragments 61. the fragment 62. fragment lifecycle lifecycle 63. Fragments are importantFragments promote code reuse. 64. custom views views 65. Month Layout 66. Week Layout 67. notated cell 68. OnDraw 69. UpdateSwatches 70. Calendar month activity 71. Update calendar 72. Update week labels 73. when month events set 74. Updating cell swatches 75. parting thoughts 76. experiences- The Android SDK is substantially more robust (complicated?) than iOS - Device fragmentation is challenging (TestCloud) - Emulators suck. Use a device instead. - Not as prescriptive in UX/Design - The more innovative (but not as polished) platform. 77. thank you!