{"id":590,"date":"2014-10-31T12:11:25","date_gmt":"2014-10-31T11:11:25","guid":{"rendered":"http:\/\/blog.ansuz.nl\/?p=590"},"modified":"2014-11-04T13:50:40","modified_gmt":"2014-11-04T12:50:40","slug":"droidcon-uk-day-2-2","status":"publish","type":"post","link":"http:\/\/blog.ansuz.nl\/index.php\/2014\/10\/31\/droidcon-uk-day-2-2\/","title":{"rendered":"Droidcon UK &#8211; day 2"},"content":{"rendered":"<p><strong>9.00 What&#8217;s new in Android<\/strong><\/p>\n<p>Company: Google, Speaker: Chet Haase<\/p>\n<p>New Nexus 6 and 9 devices. Android Studio 1.0 Beta.<\/p>\n<p>Material design: Tangible surface, easy ways of branding, meaningful motion, adaptive design. Also see the design documentation.<\/p>\n<p>UI toolkit: New theme (material), theme colours (all assets are greyscale and can be tinted), dynamic colors (pallet API). New (material) widgets: RecyclerView, (Stacker)GridView, CardView.<\/p>\n<p>Graphics: Real-time shadows relative to light source (60fps), outlines for Views. Render thread.<\/p>\n<p>Material animations: Activity and Fragment transitions. Animation curves. Animated reveal. Animated vector Drawable.<\/p>\n<p>System changes: Document-centric apps, new (material) Notifications, heads-up Notifications. Notifications on lock-screen.<\/p>\n<p>Media: OpenGL ES 3.0, Android extension pack, Camera &amp; Audio: raw input, MediaSession, MediaBrowser.<\/p>\n<p>ART is now\u00a0the runtime for L.<\/p>\n<p>Project Volta: optimising battery usage. New service: BatteryStats. Use Historian (on Github) to analyse results.<\/p>\n<p><strong>10.00 Papercraft<\/strong><\/p>\n<p>Company: Google, Speakers: Chris Banes, Nick Butcher, <a href=\"https:\/\/plus.google.com\/+NickButcher\/posts\/ciCYxxXFs6k\" target=\"_blank\">Slides on G+<\/a>.<\/p>\n<p>Reasons behind\u00a0Material Design:<\/p>\n<ul>\n<li>Providing a coherent cross-platform experience.<\/li>\n<li>A more flexible design system for Android.<\/li>\n<li>A rational approach to visual, interaction and motion design.<\/li>\n<\/ul>\n<p><em>Tangible surfaces<\/em><br \/>\nUI as digital paper. Adding z-depth, signifying UI element importance.<\/p>\n<p>Z = Elevation + TranslationZ.<br \/>\nNew &#8220;stateListAnimator&#8221;\u00a0XML-attribute.<\/p>\n<p>Extend the <a href=\"https:\/\/developer.android.com\/reference\/android\/view\/ViewOutlineProvider.html\" target=\"_blank\">ViewOutlineProvider<\/a> class to create any clipping.<\/p>\n<p><em>Print-like design<\/em><br \/>\nRefined typography, using typography to provide the app structure. Typographic scale provides the standard scales.<br \/>\nThere is a new TextAppearance.AppCompat style.<\/p>\n<p>Using bold colours, take the brand colour and use the complementary as accent.<br \/>\nStyling using:<\/p>\n<ul>\n<li>colorPrimary<\/li>\n<li>colorPrimaryDark<\/li>\n<li>colorAccent<\/li>\n<\/ul>\n<p>Theme.AppCompat provides the tinting as well (API 7+).<\/p>\n<p>Content can provide colours. To generate the colours, use the Palette class:<\/p>\n<div id=\"ig-sh-1\" class=\"syntax_hilite\">\n\n\t\t<div class=\"toolbar\">\n\n\t\t<div class=\"view-different-container\">\n\t\t\t\t\t\t<a href=\"#\" class=\"view-different\">&lt; View <span>plain text<\/span> &gt;<\/a>\n\t\t\t\t\t<\/div>\n\n\t\t<div class=\"language-name\">java<\/div>\n\n\t\t\n\t\t<br clear=\"both\">\n\n\t<\/div>\n\t\n\t<div class=\"code\">\n\t\t<ol class=\"java\" style=\"font-family:monospace\"><li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">Palette.<span style=\"color: #006633\">generate<\/span><span style=\"color: #009900\">&#040;<\/span>bitmap<span style=\"color: #009900\">&#041;<\/span><\/div><\/li>\n<\/ol>\t<\/div>\n\n<\/div>\n\n<p>The palette generation takes roughly 30ms, so run it on a separate thread.<\/p>\n<p><em>Meaningful motion<\/em><br \/>\nTo enable Activity transitions, add &#8220;android:windowContentTranstion&#8221; attribute to your theme. Next, Define a shared element. And finally, start the Activity.<\/p>\n<p>Asymmetric motion, user initiates motion. To create this, use the RippleDrawable (&#8220;ripple&#8221; XML-tag).<br \/>\nCircular Reveal, use ViewAminationUtils.createCircularReveal(&#8230;).<\/p>\n<p><em>Adaptive design<\/em><br \/>\nMaking apps looks good on various screen sizes.<br \/>\nThink in Keylines, Increments, blocks.<\/p>\n<p>New more flexible Toolbar (based off Actionbar).<br \/>\nAdd &#8220;Toolbar&#8221; XML-tag in your layouts. Also available in AppCompat.<\/p>\n<p><strong>12.00\u00a0How to Build a One Man Band<\/strong><\/p>\n<p>Speaker:\u00a0Nicoll Hunt<\/p>\n<p>You&#8217;ll need: Time, money, skillz.<\/p>\n<p>Stop wasting time on unrelated things. Use self-funding and\/or crowd funding (like kickstarter). Work with your limitations, accept them, don&#8217;t try to fight them. Learn to deal with criticism.<\/p>\n<p><strong>13.45 Graphical Magic &#8211; Styling Android<\/strong><\/p>\n<p>Speaker: Mark Allison, Blog: <a href=\"http:\/\/blog.stylingandroid.com\" target=\"_blank\">blog.stylingandroid.com<\/a><\/p>\n<p>Increasing performance by reducing GPU overdraw. Turn &#8220;GPU Overdraw&#8221; on in device developer settings to see trouble areas. Flatten any Views with transparent backgrounds. Hook into the &#8220;onPreDraw&#8221; method.<\/p>\n<p>Use the <a href=\"http:\/\/developer.android.com\/reference\/android\/graphics\/ColorMatrix.html\" target=\"_blank\">ColorMatrix<\/a> class to manipulate colour information. Use a paint <a href=\"http:\/\/developer.android.com\/reference\/android\/graphics\/Shader.html\" target=\"_blank\">Shader<\/a> to apply effects on text, the same way you can create outlines (a.k.a image masks).<\/p>\n<p>Applying blur effects with RenderScript. To avoid artefacts, add a margin and crop it off later.<\/p>\n<p>Don&#8217;t forget to recycle() any temp Bitmaps.<\/p>\n<p><strong>14.35\u00a0Rx-Fy all the things!<\/strong><\/p>\n<p>Company: Novoda, Speaker: Benjamin Augustin<\/p>\n<p>Reactive Extensions Java project: <a href=\"https:\/\/github.com\/ReactiveX\/RxJava\" target=\"_blank\">RxJava on Github<\/a>.<\/p>\n<p>Important Operators\/methods to remember:<\/p>\n<ul>\n<li>map<\/li>\n<li>flatMap<\/li>\n<li>onErrorResumeNext()<\/li>\n<\/ul>\n<p>To perform multiple operations \/ create a pipeline, chain multiple of the above Operators.<\/p>\n<p>Novoda working on a set of RxJava tools for Android.<\/p>\n<p><a href=\"https:\/\/github.com\/ReactiveX\/RxAndroid\" target=\"_blank\">RxAndroid<\/a> &#8211; Collection of tools for Android created by SoundCloud.<\/p>\n<p>For a quick intro into RxJava, have a look at the\u00a0<a href=\"https:\/\/github.com\/novoda\/dojos\/tree\/master\/workshops\/RxJava\" target=\"_blank\">RxJava workshop<\/a>\u00a0in the Novoda workshops repo.<\/p>\n<p><strong>15.45\u00a0&#8220;Project Volta&#8221;<\/strong><br \/>\n<em>Or &#8220;Getting By With Less Than 1.21 Gigawatts&#8221;<\/em><\/p>\n<p>Company: Commonsware, Speaker: Mark Murphy<\/p>\n<p>Discussing the new <a href=\"https:\/\/developer.android.com\/reference\/android\/app\/job\/JobScheduler.html\" target=\"_blank\">JobScheduler<\/a> class. All slides can be found at <a href=\"http:\/\/commonsware.com\/presos\/droidconUK2014\" target=\"_blank\">commonsware.com\/presos\/droidconUK2014<\/a>.<\/p>\n<p><a href=\"https:\/\/github.com\/google\/battery-historian\" target=\"_blank\">BatteryHistorian<\/a> is a python script hosted on the Google Github.<\/p>\n<p><strong>16.35\u00a0Deep Dive into the Gradle-based Android Build System<\/strong><\/p>\n<p>Company: Gradleware, Speaker: Etienne Studer<\/p>\n<p>The Gradle DSL configuration is mapped to the AppExtension object.<\/p>\n<p>When creating your own tasks, make sure to define inputs and outputs so the task can be skipped when there is no change.<\/p>\n<p>Enable Gradle daemon on your local machine to cut down VM warm-up times.<\/p>\n<p><strong>17.30 Closing Ceremony<\/strong><\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>9.00 What&#8217;s new in Android Company: Google, Speaker: Chet Haase New Nexus 6 and 9 devices. Android Studio 1.0 Beta. Material design: Tangible surface, easy ways of branding, meaningful motion, adaptive design. Also see the design documentation. UI toolkit: New &hellip; <a href=\"http:\/\/blog.ansuz.nl\/index.php\/2014\/10\/31\/droidcon-uk-day-2-2\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[112,52],"tags":[114,113],"class_list":["post-590","post","type-post","status-publish","format-standard","hentry","category-android","category-java","tag-droidcon","tag-droidconuk"],"_links":{"self":[{"href":"http:\/\/blog.ansuz.nl\/index.php\/wp-json\/wp\/v2\/posts\/590","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.ansuz.nl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.ansuz.nl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.ansuz.nl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.ansuz.nl\/index.php\/wp-json\/wp\/v2\/comments?post=590"}],"version-history":[{"count":13,"href":"http:\/\/blog.ansuz.nl\/index.php\/wp-json\/wp\/v2\/posts\/590\/revisions"}],"predecessor-version":[{"id":606,"href":"http:\/\/blog.ansuz.nl\/index.php\/wp-json\/wp\/v2\/posts\/590\/revisions\/606"}],"wp:attachment":[{"href":"http:\/\/blog.ansuz.nl\/index.php\/wp-json\/wp\/v2\/media?parent=590"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.ansuz.nl\/index.php\/wp-json\/wp\/v2\/categories?post=590"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.ansuz.nl\/index.php\/wp-json\/wp\/v2\/tags?post=590"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}