I really love attending Droidcon London every year, and this year was awesome! Each year is an opportunity to learn new things and experience new and interesting ideas from other Android programmers. So here’s some of the things I wrote down, maybe they’ll be useful for you too!
Britt walked us through why and how she built an App for her Nana where she could take a picture of something, such as a tub of ice cream and it would say what was in the picture. This is pretty easy now to do with some of the Machine Learning libraries from Firebase!
Things that I learned:
There is a device setting to scale view size as well as text size (scales dp AND sp)
Use sp, not dp for button heights and widths that contain an icon
Colour contrast is important. Use 3:1 for large text, 4.5:1 for smaller text. You can use www.contrast-ratio.com to find out.
Design labels and buttons for text to grow and wrap, think how would your label look if it took up 2 lines instead of 1.
The average fingertip is 50dp, so make sure buttons are at least 48dp! You can use min_height and min_width if you have programmatic text on a button.
Using Talk Back if data on the page updates. You can use Accessibility Live Region with either assertive (it stops reading anything else to notify that somethings changed), or polite (let’s the reader finish what it was doing before announcing a change).
There’s an API to check if accessibility is enabled on the device, maybe consider showing an adapted UI for these people!
Florina talked to us about how they re-architected their app Plaid. If you’re thinking of re-architecting an app anytime soon (or starting a new app) I’d definitely recommend a watch!
Things I learned
Code reviews are an opportunity to share knowledge with the team.
Create technology champions who are experts and owners in their area of expertise. Set up knowledge sharing sessions so everyone has some knowledge of everything!
Use short lived branches for version control and make sure things regularly get merged into master. This means no merge issues or lengthy rebasing!
Try continuous delivery to understand better if what you’re building is actually correct.
Decisions based on product needs — you don’t have to use all the new shiny technologies think about what you really need
Christina gave us an introduction to coroutines with a presentation of five things we needed to know before we got started, and then she refactored an rxjava app to use coroutines live on stage. And it ran her first attempt!
Things I learned:
Coroutines are a state machine object.
Coroutines are builders and entry points into suspendible code.
Coroutines dispatch to threads.
If you want to cancel things use jobs (in rxjava land disposables)
Coroutines are synchronous by default. If you want concurrency it’s explicit and you have to opt in.
Stacy walked us through an example animation but using 4 different ways to achieve the animation; XML, animate(), Animation Library, Object Animator, and a bonus property versus holder. If you want to see the code in action check out www.bit.ly/AndroidAnimCode. There were questions and prizes given!
Things that I learned:
If you’re using Lottie for animations there’s www.lottiefiles.com to share and use other peoples animations.
There is a library called Kyrie which is an alternative to AnimatedVectorDrawables
If you’re looking for the best way to add smooth animations to your app, check out ObjectAnimators.
MotionLayout and ConstraintLayout 2 might solve some of these issues as it will work on a deeper level than canvas. Some issues right now include no API, and only 1 motion scene per layout.xml! However, sometime soon there will be a UI Simple animation orchestration tool which was apparently demonstrated at IO this year.
Hire Better, Faster, Stronger
Things I learned:
Top performers always means something different at different places.
Fundamental attribution errors in that people tend to put more importance on the persons character or intentions than on external factors.
You should look at what gaps do you have in your team currently, how do you look to fill those gaps?
Think about your red flags when interviewing e.g. being interviewed by 7 white guys doesn’t show diversity from the employer and is for most people a major red flag.
Document your interview process, do all the stages and questions really need to be there?
Create a calibration sheet for the interview process, which means you can compare different candidates as fairly as possible with data.
As a candidate ask expectations at each stage. Is not knowing something really a deal breaker? For example if the technical test requires writing Kotlin and you don’t know Kotlin, would they help you learn on the job if you were successful?
Use the expectations to take 10 minutes ahead of an interview to get into the right mind frame.
As a candidate you are also interviewing the company!
Corey sketch-noted and spoke (!) about her journey through being more intentional.
Things I learned:
Joyrney — it’s a journey but with 100% more joy!
Use your emotions as data point, start journaling and measuring your emotions over time. Think about patterns and what leads to good or bad days.
You don’t have to take all feedback — saying “Thank you for the feedback but I’m moving on” is okay too.
Create a diverse board of directors for your life — people you can go to and ask “life” questions but will also push you to be a better person!
Create a vision for the next 2 to 5 years. Break it up into what you need to do for the next quarter, create 1–3 achievable BIG goals.
Theme your days to defragment as much as possible e.g. Mondays being for meetings, Tuesdays being for client work etc.
Personal feedback can be poison, think about how to give feedback as fast but remember to be as kind as possible.
Read the Sunflowers poem by Rupi Kaur
And finally, my all time favourite activity is catching up with all the friends I’ve not seen since last year, and all the new friends I got to meet. I got a bunch of new stickers for my sticker collection, and an amazing rainbow pin for my backpack. I also got to join the Android Peeps and play Mario Kart on the switch between sessions! Hopefully we’ll see you all again for next year :-)