DroidCon UK 2015 day 2

Warning: Illegal string offset 'language' in /var/www/vhosts/ansuz.nl/subdomains/blog/httpdocs/wp-content/plugins/igsyntax-hiliter/classes/frontend.php on line 510 Warning: ksort() expects parameter 1 to be array, string given in /var/www/vhosts/ansuz.nl/subdomains/blog/httpdocs/wp-content/plugins/igsyntax-hiliter/classes/frontend.php on line 513 Warning: Illegal string offset 'language' in /var/www/vhosts/ansuz.nl/subdomains/blog/httpdocs/wp-content/plugins/igsyntax-hiliter/classes/frontend.php on line 510 Warning: ksort() expects parameter 1 to be array, string given in /var/www/vhosts/ansuz.nl/subdomains/blog/httpdocs/wp-content/plugins/igsyntax-hiliter/classes/frontend.php on line 513 Warning: Illegal string offset 'language' in /var/www/vhosts/ansuz.nl/subdomains/blog/httpdocs/wp-content/plugins/igsyntax-hiliter/classes/frontend.php on line 510 Warning: ksort() expects parameter 1 to be array, string given in /var/www/vhosts/ansuz.nl/subdomains/blog/httpdocs/wp-content/plugins/igsyntax-hiliter/classes/frontend.php on line 513 Warning: Illegal string offset 'language' in /var/www/vhosts/ansuz.nl/subdomains/blog/httpdocs/wp-content/plugins/igsyntax-hiliter/classes/frontend.php on line 510 Warning: ksort() expects parameter 1 to be array, string given in /var/www/vhosts/ansuz.nl/subdomains/blog/httpdocs/wp-content/plugins/igsyntax-hiliter/classes/frontend.php on line 513

9.00 Keynote – Android for Java Developers
Speaker: Chet Haase

Or “Avoiding the Tragedy of the Commons”.

Ten articles on medium.com with tips for developing Android apps when coming from a Java backend background. First in the series: “Developing for Android: Introduction“.

Allocations, Android performance workshops.
“… dive deep into graphics and UI performance topics.”

“Denotes that the annotated element of integer type, represents a logical type and that its value should be one of the explicitly named constants.”
Alternative for enums.

10.00 Staying alive, online and offline
Speaker: Erik Hellman

Tips about handling offline in your app.
Slides will be posted online later.

11.00 Beautiful Typography on Android
Speaker Lisa Wray
Video: YouTube

A full example of custom fonts in XML using data binding and including font caching.

Use spans, when using HTML text consider replacing default spans with your own.

Audience suggestion: Java Ropes.
“A rope is a high performance replacement for Strings.”

12.00 Prototyping your Android app, the (U)X-factor
Speaker: Wiebe Elsinga
Video: YouTube

Prototype definition: Visualisation of an idea.

Uses of prototypes

  • Raise new questions OR answer existing ones.
  • Explore alternatives.
  • Fail early and cheaply.

“Fake it until you make it.”

Who will make the prototype? Create it with the whole team.

Good prototypes are Quick, Cheap, Minimal and Testable.

How to create a prototype?
1. Plan

  • Define user stories (1 or 2 sentences each).
  • Identify tasks.
  • Create user flow diagram.
  • Sketch rough interface screens.

2. Build

  • Using UI stencils or
  • Showing paper or
  • Templates (Sketch, Adobe Illustrator, etc) or
  • In the cloud (Marvel app) or
  • With motion

3. Test

  • Several prototypes
  • Choose the right users

4. Refine

  • Discuss results
  • Integrate findings

5. Repeat.

13.45 Meaningful motion
Speakers: Nick Butcher and Benjamin Weiss

View Property Animator
Simple animations, since API 16. Use ViewCompat for backward compatibility.

  1. someView.animate().alpha(1f)

Animate all the things, since Honeycomb. Choreographed animations.
When no getter/setter exist, use the Property class.
For colors, set the evaluator to ArgbEvaluator.

Easing in and out.

  1. AnimationUtils.loadInterpolator()

Circular reveal

  1. Animator reveal = ViewAnimationsUtils.createCircularReveal();

Move from scene A to scene B.
Transition and TransitionManager classes.

  • ChangeBounds: Animate size and position of an object.
  • Fade
  • AutoTransition: Fade in, ChangeBound and Fade out.

Window content transitions
Entering and exiting (Activities).

  • Slide
  • Explode

Can be added programmatically or declared in XML.

  1. Bundle bundle = ActivityOptionsCompat.makeScenTransitionAnimation().toBumdle();
  2. ActivityCompat.startActivity(... bundle);

Use android:transitionGroup=”true” to treat the View as a single animation target.

Shared element transitions
Since Lollipop, use AppCompat.

Animated Vector Drawables
“This class uses ObjectAnimator and AnimatorSet to animate the properties of a VectorDrawable to create an animated drawable.”

Sample Apps

14.45 Physics UI
Speakers: Filipe Abrantes and Will Bailey

Slides: https://github.com/fabrantes/physicsui

Help making animations consistent.

“Rebound is a java library that models spring dynamics. Rebound spring models can be used to create animations that feel natural by introducing real world physics to your application.”

An interesting paper from Microsoft “The Magic of UI Physics“.

15.45 Microservices is our BFF: why SoundCloud stopped using its own public API for its mobile clients
Speaker: Duana Stanley

Public API development is slowed down because it needs consensus. Some parts of a private API are not needed or wanted in the public API. A public API needs to be future-proof.

To overcome the issue create a “presentation” API, which is another layer. Break API up in micro services.

The result was BFF: Backend For Frontend. Provide a framework to make it like “scripting”.

“App+backend together build better APIs”

16.45 Make Believe
Speaker: Shanee Nishry

VR Hardware

  • Morpheus – Sony
  • Oculus Rift – Facebook
  • GearVR – Samsung
  • Vive – Valve
  • Etc…

Cardboard devices as cheap alternative.

Loads of interesting peripherals.

Own section for Cardboard in the Google Playstore.

How does VR work?

  • Visual immersion
  • Tracking
  • Input (Interaction)

Challenges in VR

  • Latency and performance.
  • Tracking.
  • Comfort and design.

Technical requirements

  • High resolution.
  • Wide field of view.
  • No motion blur.
  • Low motion-to-photon latency.
  • Stable high frame rate, 90, 120+.

Vulkan: Low overhead graphics and compute API.

Beware of people’s real-life fears, think about vertigo, claustrophobia, etc.

Project Tango: “Project Tango technology gives a mobile device the ability to navigate the physical world similar to how we do as humans.”

  • Motion tracking
  • Depth perception
  • Area learning

Facebook Infer: “A static analyzer for Java, C and Objective-C”.

Leave a Reply

Your email address will not be published. Required fields are marked *