ConstraintLayout 2.0 with MotionLayout, with Huyen Tue Dao [Droidkast LIVE 02]

Huyen came to tell us how she became a software developer, her experience becoming an Android developer, a  speaker. She also told us about some of her hobbies

Her talk was about the new features inside ConstraintLayout 2.0, with a special focus on MotionLayout. We saw how MotionLayout can help you create awesome animations in no time.

Huyen is currently working at Trello, which many of you may use. She is also the co-creator of Android Dialogs: a YouTube channel where they interview many Android developers. You probably have seen her in one of the many events she attends.

1. The video

You can watch the full episode here:

2. The interview: Main questions

  1. Tell us a little about your story. Where are you from, how was your childhood, and what led you to start in software development?
  2. I think that when I knew about you, you already were in Trello. How was your career progression to get there? What do you think that it helped you the most?
  3. I can imagine that giving to the community (talks, interviews, events) has helped you in many ways. Would you recommend it to anyone?
  4. Did you have to fight many fears to be able to do it? Things like impostor syndrome, public speaking, the frightening post-talk questions… 😀
  5. I’m especially interested in Android Dialogs, your interviews channel with Chiuki. Doing on-site interviews seems especially difficult, because you have to take the equipment with you… How do you organize those talks?
  6. Apart from doing all those great contributions, what other hobbies do you like to spend your free time on? I read something about games 🙂
  7. And what about food and cooking? I see you sometimes share your new recipes.
  8. When you think about your long-term future, how do you see it? Do you think you’ll continue in software development for the rest of your career?
  9. If you had to recommend just one thing to our listeners, about anything, IT related or not, what would be?

Questions from the audience

  1. What’s your routine or tricks to learn new things?

3. The talk: Cool ConstraintLayout 2.0

ConstraintLayout has had quite a year in 2018: the release of 1.1 in April and the announcement of 2.0 in May. The ConstraintLayout team has certainly kept us busy with frequent updates, optimizations, and new features including groups, barriers, circular constraints, and optimizations. As if that wasn’t enough, ConstraintLayout 2.0 now adds a Helpers API and the MotionLayout, which builds on the capabilities of ConstraintSets to give developers featured-packed and fine-grain control in building animated transitions within a layout, including keyframe animation.

In this session, we will look at concrete examples and code (and also adventure to the design view and motion editor) to show how to use these features to do really cool things with ConstraintLayout. We’ll also talk about the features in ConstraintLayout’s future.

Link to the repository: Cool ConstraintLayout 2.0

4. Raw transcription

The transcription has been taken from YouTube automatic subtitles, so it’s far from perfect. In any case, if you prefer reading it, here it is:

[expand title=”Expand the generated transcription”]

hi everyone and thank you for being

today here with here with you and me in

the end she could make it I told you

that he were she was having some issues

with her network connection but in the

end we go we could sorry one question

one second I listening to myself and

this is very and so as you can see he

she could make it Indiana and we are

having her here to ask a few questions

about herself of her career and also she

will talk us about some new features of

the constraint I out and also the

emotional I also and really start I’m

really happy to have you here thank you

so much for being this time with us oh

I’m so happy to be here today thank you

so much

so if you want first for the ones that

don’t know much about you tell us a bit

about you what you’re doing right now

one of that yeah so hi everyone I’m pour

into it down I am an Android developer

I’m based in the US in Colorado and

currently I’m working on the Trello app

the Israel Android app for Atlassian so

and I’ve been there about three and a

half years now so yeah I think I for me

you have in all your life working there

because I don’t know if I if I met you

before that and it’s I agree doubt that

I’m sure that many of the listeners use

today so it’s great isn’t it an exciting

project I guess working remotely and but

we get to we get to that point later so

if you want tell us a little about your

story first where you are from how was

your childhood or what you let you to

start in software development

ideal without your background yeah yeah

so I was born in the US and it was

really funny because I got into software

development kind of by accident I was in

high school and we had to have technical

requirements I think back then I wanted

to be a journalist I’m not sure

or maybe a doctor I kind of what between

the two is quite different but in my

high school we had to have technical

requirements and there wasn’t a lot of

classes and the first the first one I

took which is a typing class because it

was easy and I figured why she get I

love the I think not sure when this was

and I don’t know want to say exactly

what it was but you know I was getting

into like the internet and like just

doing things on the web and I was like

well if I can type faster I can probably

use the internet faster so I took a

typing class and unfortunately I still

need one more credit and I just happened

to find out that some of my friends were

taking a programming class C++ and I

pretty much was desperate I took it out

of hey why not my friends are taking it

I’ll have help and I’ll have no people

but when I took the class I kind of

basically changed my life I figured that

oh I love this this is exactly what I

want to do so I basically changed around

to being computer engineer also I love

video games so I figured hey well I love

video games as well so maybe if I learn

how to program and make that my career

maybe I can develop video games as well

I didn’t end up doing that I took a lot

of turns in my life I did web like rich

and applications in college I got a job

to be that uni and then I kind of just

stuck with web applications and then I

was in the flash world way back in the

day when flash was still a thing that

people actually wanted on their machines

I actually was working on this it was

like a framework built on top of flash

called flicks and I was doing that for a

while it’s actually when I first started

speaking this is oh gosh like 10 years

ago and you know if anyone remembers

back then Steve Jobs when he was still

with us wasn’t really a big fan of flash

and started letting people know how much

she didn’t like flash and it kind of

seemed like the world was moving away

from that to html5 and things like that

and so I had to make a choice I had to

change my technology

lucky for me one of my friends at the

time who was also a flex developer I was

really into this thing called Android

and he convinced me to basically learn

Android and hop on a job with him

because at the time I was a working for

a consulting agency so just hopping from

project to project and then I was

lucky I find it that I loved Android and

I love mobile and yeah and that’s that’s

how I got to Android it was a little bit

tough back in this was like uh eight

seven years ago there’s a lot like

weren’t a lot of Android job so I did

iOS for a while because there are few

miles jobs but it was still mobile it

was still great and I think I did while

I was still with that consulting company

I switched from Android to iOS and maybe

back and forth a couple times and the

last which off I did was Android and

that was kind of just it I decided to

stay because I just started loving to

get involved in the community and

meeting with these people and really

getting into Android and it kind of just

stuck and I’ve been there ever since and

that was like my last job before Trello

and so I’ve been at chellah ever since

but and also fun fact that friend of

mine who got me into Android is now my

fiance so we were very born couple we

just talked mostly about Android but

yeah so I for for many different reasons

andrew is a big part of my life I can

imagine and how how was your progression

to get into trailer what do you think

that it helps you the most to to get

that opportunity networking actually

it’s really funny I I can I can think of

the exact moment where I actually got

started to get the job I was actually

very lucky to get to IO for the first

time and it was really just talking to

people and just kind of opening up and

meeting people and asking what they do

and having them ask what I do and I Amit

Hamid

he is currently I think a kind of humor

product guy now but at the time he was

like the mobile lead and I just got to

know him he thought I’d be good for the

team and the rest is history

so I mean I I strongly believe that a

lot of it was kind of getting out there

and not necessarily as a speaker or as

doing anything like particular but just

getting out there and meeting people and

engaging with people that are interested

in what you do or are the same field as

you and just making connections I mean I

think that’s something you hear a lot is

networking but I mean literally just

going to talk to people and a lotta that

I think with that obviously your

experiences and

trying to you know like keep your skills

up and get a broad range of experience

is super important but really like the

the doors open when you meet people and

you share your experiences with them so

for sure yeah that’s going to meetups or

you know different events I think that

helps a lot and also gives you a idea of

how the the underworld is right now on

whatever opportunities are and where

what you can do to to achieve those

goals I think it’s it’s great yeah and I

just want to make clear like um I don’t

I don’t think I said anything like crazy

genius are dazzling about Android I

think I just literally was complaining

about things at work things that I

didn’t like and the things that I wanted

to see change and I guess I complained

well enough that that made me see me

like I mean just I was speaking very

honestly about my experiences and things

so yeah I mean just just having that

connection and having those experiences

to draw from I think are really like

really important things so you never

have to worry too much about feeling

like you’re like a star or that you know

everything is really just people people

appreciate you and who you are in your

experiences for sure so that’s true

and at that moment were you already

doing talks are they interviewer yeah

what do you think yeah so it’s funny

actually that aya was when so I had

already been speaking so I was I started

speaking about ten years prior when I

was still doing flex and so I had

stopped a bit you know when I was going

through and job changes I stopped for a

bit I oh but I always loved speaking I

think I got to where I am my first job

out of uni was I mean it was it was good

but it was very corporate it was very I

felt very isolated from other engineers

it was it was a good job but I I don’t I

I wasn’t I wasn’t able to I guess

explore the things I really loved in the

same way and I think that I would have

probably stayed in that job if I hadn’t

have been lucky to go to a conference

and to have a

well now a friend but someone that I was

working with go around and like say it

introduced me to people and say hey you

should go talk to these people or hey

should go we should go like here and and

like meet these people and learning how

those connections work and I really

think that that was very viable for me

to kind of open up and say hey like oh

this is a community like there’s people

out there that talk about these things

that we love to do it wasn’t just that I

go to work I do my job when I go home if

I love and I’m passionate about what I’m

doing that’s people that can share in

that passion so I was speaking back then

because I wanted to kind of kind of

really dive into it and also give back

because I felt like that really changed

my life a lot I’m having those

experiences so I I was speaking a little

bit I was getting back into speaking I

think by the time that I had come around

I’d done a couple of talks those were

like my first Android talks it was it

was really nerve-wracking to get back

into it

and Android just felt very intimidating

at the time I just it was new for me you

know there’s Androids always got its

little things so at the time I got the

Trello job yeah I was starting to speak

again and it was funny because that IO

shook and I had like already kind of

plan to do the channel my my YouTube

Partner of cheeky John and we had

actually were going around interviewing

people we just hadn’t like published yet

we were kind of just doing the initial

interviews so it was kind of like

Android dialogues and Trello all kind of

happened for me in the same year I think

that was so it was a really good year

for me I got a new job that I loved with

a team I love for the product I love and

just got to start this YouTube thing but

I also loved so yeah yeah and I wanted

to ask you I filed a little more in in

all these things you do what if you have

had to fight many fears to do it I know

that people think that people that are

used to do talks probably lose those

those fears and it’s easier for them

obviously the experience is a it’s a

point but can you tell us how it was

back then in the

in the first talks on how it is now when

you have to put in inference of a lot of

people to talk and all that yeah no oh

my gosh

impostor syndrome is something I have a

lot I I still have it like every other

day now maybe every day and I mean I

want to say something reassuring I’m

like it goes away but I think I guess it

depends on who you are for me it never

quite goes away and I was really

intimidated bike then I think I’m still

always really nervous whenever I’m

giving a talk it doesn’t matter if like

it’s a small room or a big room or if

I’ve given a talk by 10 before or once

before or never

I’m always really nervous and I think

it’s hard not to be nervous

like you care you know you you want to

do a good job you want to you know be

worth it for me I want to be worth

people’s time and so that always makes

me nervous and of course like it’s so

hard for me I always worry am I being

technical enough am I did I say

something wrong did I say something

incorrect or people don’t think I don’t

don’t know what I’m talking about that

never goes away

but like the more you do it and like the

more that you know you kind of find your

voice or the more you practice some of

those things go away you kind of learn

your voice or learn what you like to

talk about you learn how you like to

speak and you know hopefully you get

feedback where people say hey they learn

something or hey they appreciated your

talk and that kind of comforts you a

little bit and you kind of feed off that

and you take that little but you take

that first little like bits of like

positivity and kind of like feeling that

what you did was worthwhile and you kind

of build on that and build on that and

you kind of use that as a shield I know

for me I don’t think I don’t think the

imposter syndrome and the fears will

ever go away but as long as people like

seem like they’re getting use out of

something that I do I’ll continue to do

it and like Android dialects were the

same way I I think it’s pretty easy to

see like the first few episodes or few

interviews I was very nervous I was very

lucky to Keshawn knows everyone and so

that was really helpful to get us

started she was a look like that’s kind

of convincing people to come on camera

and she’s awesome you know obviously

very awesome she’s very outgoing she’s

very a great speaker and just very

out there and for me I think I wanted to

be like that and I think sometimes I

can’t be like that but I was also very

nervous like I think our second episode

we released was with chet haase and torn

or be and I think if you watch that

interview I barely talked at all I was

so nervous and true he tried really hard

to help me with that but it was really

difficult they were also very kind but

um you know and I think as I’ve

continued to do this I’ve gotten better

you just you know can you kind of just

again you learn your voice you practice

just like everything else so you just do

it again you make mistakes you reiterate

you fix your bugs and you go back again

it’s the same with speaking and

interviewing or just doing technical

things that is with anything else and

yeah I don’t think it’ll ever go away I

still kind of try to do the best I can I

still try to make it worth anyone’s time

that spends time on me either with

talking to me or listening me speak so

um but just I think definitely

celebrating the things that you do that

you do well and appreciating that in

yourself is really important and being

easy on yourself like I definitely work

hard but it’s easy for us to be our

worst critics it’s easy for us to see

the things we did wrong and think of

them as about a thousand times bigger

than they are

but celebrating like knowing what you

should do better but also kind of not

being too hard on yourself helps a lot

it’s hard it’s much harder to just to

just either to say it in the did you and

also like talking to other people

getting support is very helpful yeah

yeah that’s true in my own experience

what I think is that you learn to and

you don’t know worry about the things

that can go wrong even if they go wrong

maybe you do realize that nothing

happens that people are not there to

judge you yet just to learn from you so

that really helps a lot and in my case

it’s always the same I also get very

nervous I’m nervous right now I am when

I do talks because I’m I’m really shy

but you learn to to canalize those those

feelings and to make them not to to

interrupt you or to make you go away

from where you want to tell and

that’s the thing that the practice makes

zero feelings don’t go away but at least

you can learn to live with them yeah

yeah absolutely just like a muscle that

you that you exercise just the same

thing I totally 120% agree and you

mention a couple of times and retire

looks for the ones that you don’t know

about it I probably nobody but anyway

tell us a little about this and how they

became art yeah yeah sorry so um for

those of you who aren’t familiar with I

guess the channel um so my very good

friend shiki-chan and I we produce a

YouTube channel it’s called Android

dialogues and our tagline is that we

have bite-sized conversations with

people in the Android community and

really that’s all that is we meet with

people in the Android community and we

talk about what they’re doing so we’ve

talked to developers of course designers

managers and really if it’s if it’s if

is related to Android development even

if it’s kind of more career related or

like design related we talk about

everything and so we’ve been doing this

since I think we first published a video

September 2015

that was like my big year and we’ve been

doing it ever since

we try to be weekly we’re not always

it’s difficult when you have a proper

job and doing your side things of course

I’m sure underneath oh you know like is

it a lot there’s always a lot going on

but yeah it’s it’s been really great I

think you know when I started to get

back into the Android community you know

I think Kaushik go Paul and Don Felker

were working on fragmented I think they

had just started it that year I might be

incorrect on that and I’ve always loved

I’ve always loved the idea of podcasts

and YouTube in the internet media it

feels like these days if you have

something to say there’s so many

platforms for you to you know put your

voice out there and easily just like for

us normal people

not just like you know people in the

industry and I always wanted you to like

that I was wanted to have a podcast but

I also have a very short attention span

I have difficulty paying attention

longer than 40 minutes that’s just me I

just it’s just a failing of mine and so

I kind of wanted to do something almost

for me where I wanted to talk to people

in the Android community but else keep

it

relatively short relatively short but

just be able to kind of talk to people

and I strongly feel again that I would

not be Who I am my career and like as

like skilled or as happy or as like kind

of where I am without other people in

the community putting themselves out

there and sharing and I think that a lot

of times is there’s you know we’ve every

community I think has very visible

people people that do a lot are kind of

famous that you kind of everyone knows

but there’s so many people doing

wonderful things that you may not know

as well just because I don’t know maybe

you’re not in the same geographic

location or you just haven’t been

exposed to them and so I love the idea

of just celebrating everyone and anyone

and everyone that does something you

know wonderful or interesting or cool in

this community so I brought the idea to

check each on because we both were going

to i/o I was so excited and I was like

what do you think if I did this podcast

thing and she said well I have a camera

my new video so we ended up just kind of

working on it together and it’s kind of

that’s kind of just history we’ve been

doing it ever since usually we’ll go to

conferences and talk to speakers but

other times we’ll just talk to folks

that you know have something cool to

share so yeah and that’s Android

dialogues you know what I find

fascinating is that you do it life and

in any event how do you prepare all that

do you work with with the studio on your

luggage it was funny because I just

started out with two keys camcorder and

I had a small audio recorder and then I

guess like anything else you just

something breaks and you try to fix it

so with us like we had a lot of echo or

reverb like the first time so we’re like

okay I’m gonna get it better mics set up

and it’s just like any other hobby or

something you start just building and

building and now I have like several

kilos of equipment that I’m bringing

with me everywhere I have like a camera

I’m kind of the crazy one uh she cooky

has is less crazy than me I’ve I have a

setup with lights and like with a camera

and with microphones and all kinds of

stuff I’m very lucky that my fiance

who’s also again like I said an Android

developer tends to come with me to

conferences but generally the way it

works is that

I’ll try to find folks to talk to you

the easiest thing to do is to look at

the speaker’s list and see Oh who’s

talking who’s gonna be there it’s a good

way to find like just guess and a lot of

times is also I think easiest in the

guess just because they’re kind of

prepped and ready to talk about

something but you know we we try to find

I which we try to find really hard not

to talk to same people twice I don’t

think I don’t think we really talk to

anyone of the same guest twice that we

did have a agenda more let Dion twice

one for doing their we’re gonna want to

talk about but but we try to find new

people all the time because I my goal is

to like kind of celebrate all the

different people we have in the

community so I try really hard to find

different people so I usually go look a

speaker list or if there’s someone I

know that I kind of know that they just

think cool I’ll just ask them if I know

they’re gonna be at the conference or if

I know I’m gonna be in their area and

then I usually just hug a bunch of

people see who’s willing to talk to me

for you know 20 minutes and then I just

set up somewhere hopefully convenient

and then hopefully come people come stop

by and just chat with me for a bit and

yeah it’s a bit of work setting up and

bringing the equipment’s I’ve gotten

pretty strong left all our things around

but it’s it’s really fun and I just I

just really enjoy it and I hope I hope

it’s not too much Anna so I was not too

painful in people that do it which I

really appreciate everyone who’s ever

been on but yeah that’s pretty much how

it goes I just kind of bug people to

talk to me and then put them on camera I

I really appreciate although all that

work because I I try to record my videos

too I mean it’s pretty difficult and and

seeing you do it out of your conference

comfort zone in any place and prepare

all the equipment and all that that’s

that’s really missing yeah it’s tough

sometimes you know places aren’t always

perfect like you’d love to have a

wonderful soundproof studio that’s

well-lit sometimes things are a little

bit echoey sometimes the cameras a

little bit off sometimes I have

something in my teeth except that

actually has happened where I look at

the videos like oh my gosh I should have

had lunch before I talked to them

yeah I mean I I think people are

actually just really genuinely happy to

see our interviews I think for the most

part and I’m worried about what I have

in my teeth so it’s a challenge but it’s

still fun I think and our dances in

general fantastic and apart from all

those contributions to the community you

do in many different ways what other

hobbies that can be a little way from

from development you know you have I

read something about games video games

in general I also table games I think

and all that yeah yeah I’ve always been

a big gamer my parents got us a NES when

I was when we were little and I’ve loved

video games since then again it like and

I mentioned it kind of drove my passion

to be an engineer that kind of dropped

off I I know that the games in history

was pretty tough and I think that I I

say I chickened out but I decided that I

kind of didn’t want to go in that

direction I still love video games I

think they’re amazing and it’s kind of a

good time to be someone in the video

games it feels like I don’t know they’re

a little more mainstream than they used

to but I like all kinds of games I love

for games a lot of my family and my

friends are board game people I love

card games my dad kind of you know that

was kind of one of our things just to

sit around um I remember when we were

little where I live usually we’d have

thunderstorms in the summer and the

lights would often go out and I would

actually love for the lights to go out

because then my dad would just sit

around play card games with us games was

kind of like it’s one of those things

that you like to do together yeah mostly

games I also think the audio the audio

videos also become kind of a hobby I

mean it’s kind of cheating because it’s

so Android related but I really think

that audio/video production is really

fascinating I’m just like anything else

tech related there’s like so many levels

that you can get involved in and

research and there’s so many aspects to

it it’s really neat I’m not any good at

it I’m not saying I’m any good at it

but it’s fun and it’s it’s fun to do

especially again like with YouTube and

with the Internet and seeing what people

can do like with like few resources and

and the kind of beautiful amazing videos

and documentaries and like kind of

essays that people put up on the offer

other people enjoy

I like doing whatever I can to paly

imitate that that’s pretty cool and yeah

like I guess what I’m not doing that I

love to cook as well my has or my fans

and I both love to eat and I’ve I tend

to cook a lot when I can when I’m not

editing videos are working I really do

love cooking and it’s another thing that

I’ve also kind of gotten to like deep

holes and I feel like everything I do

it’s gonna turn into like gadgets or

like figuring out like the optimal

technique and like everything else so

yeah if you follow me on twitter at

cream cone monkey and I apologize but

every now and again when I make

something isn’t half-bad like to post it

so if you follow me and you notice food

that’s because I’ve kind of been really

into yeah but it’s nice to see what

people do in their free time other

people you may follow for other

different things because in the end its

we are a whole person and even if we try

to compartmentalize our lives in the end

we are a whole person and everything

mixes and and yeah I think that it’s

seen the hobbit hole of other people

make you understand better how they

think about they what they do and that’s

that’s nice I love what I love seeing

your your photos about cooking too

because it may be because I like cooking

too yeah I like what’s in your what what

you get on there but yeah it’s it’s

another nice core game yeah I mean and

we all need food right so I’m just

trying to be ready for you know when the

zombies come and we all have to start

cooking your own food and can’t go to

McDonald’s or something I just but yeah

I do agree I think that especially as

engineers I feel like it’s so easy to

get wrapped up into work especially with

some of the pressures of tech industry I

didn’t think that yeah you should

nurture like the whole you and and and

explore things and and push your passion

and other things as well like you said

whole people like and and and young and

letting that side of yourself show is

it’s a

sighing and I like it’s likewise I like

seeing in other people too yes I totally

agree that we need to to disconnect a

little bit from from our world because

otherwise we can get consumed I I had

some sown years a few years ago that I

only did under it including get away

from that and that’s so that’s also not

not very good so having some hobbies

that can you get distracted on and focus

on other things I think it’s it’s very

good too

yeah I strongly think that’s important I

mean it is there’s a lot of pressure

especially when you’re younger and kind

of beginning in your career there’s a

lot of pressure you just kind of work

that 60 hour weekend and get things done

and build a career but I think that it’s

easy to burn out or lose your passion

when you know it because it can become a

grind we got to ship ship ship ship ship

and yeah I think as I’ve grown older

like you can balance out having a very

full like dedicated passionate career

but still like be yourself and I think

the being yourself and having something

outside of work it becomes more

important especially if you want to stay

in here and you want to stay

enthusiastic you have to like you said

in disconnect it’s so important take

care of yourself I’ve actually also

really been into like exercising and

taking care of myself like the last few

years and it seems selfish it seems kind

of silly but it you know there’s you

know taking care of yourself kind of

makes you know taking care of you know

good food good exercise getting away

from the desk

I think it does make for a better career

overall and a longer career sure yeah

totally and getting back to the end of

this first part when you think about

your long-term future and how do you see

it and do you think as you continue

doing so well development on your life

have you thought about it because

nowadays is difficult yeah I I honestly

believe that for better for worse that I

don’t think we all I don’t think Android

will look what it will look like in five

ten years I do continue want to be an

engineer

do software whatever that means you know

in 10-15 years I know a lot of us kind

of have that question of do we want to

stay an engineer or do you want to go

into management and to be honest with

you I love leading teams and I love

leading features I don’t think I like as

I see it now I don’t think I could ever

get too much away from being hands-on

with engineering so I kind of see myself

still software development you know

maybe you know maybe leading a team but

still kind of hands-on and doing cool

things that’s kind of just it’s just

it’s still like my passion and you know

I think that if I’m not doing mobile

that’s okay I would like to stay in it

as long as it’s like a thing but I mean

who knows what kind of interfaces or

what kind of device so we’ll have in

already report and we’ll start like you

know mobile development even be like how

we picture it but I’d like to be in it I

love the tech space I love seeing what

tech is enabling us to do and how it’s

changing the world mostly I still

believe mostly for the better sometimes

not so better but I think being in it

and trying to make a good impact as

things change and as technology allows

us to more things kind of just where I

want to be so yeah I think I’ll still be

in tech hopefully programming until the

until they’ve automated all the

programming as well so you have to

recommend just one thing to a listener

or anything that is related or or not

what would be oh my gosh it’s so hard I

guess just in general I would just try

to I can’t I don’t think I could

recommend one specific thing but I would

say like just keep trying to see what

other people are doing be inspired I

think that it’s hard to keep up like I

know like after every conference there’s

like 20 talks and I was like oh my gosh

I have to go 20 talks and take notes I

wouldn’t even let go that far I think

just you know and again we talked about

work-life balance and trying not to

inundate yourself with work things but

you know try to stay you know kind of

have a vague idea what people are doing

like watch talks but

worried about consuming and remembering

everything kind of see what other people

doing see what you know people that you

respect or that you think are cooler

doing and just stay inspired like keep

consuming keep assuming more things um I

think that the thing that I’ve learned

most about his career is it you’re not

gonna be doing the same thing for five

ten years in a row

and it’s hard sometimes because you know

we all have that all those like

frustrations with like something not

working or learning a new thing and

things changing and it’s intimidating

and frightening but this is kind of how

being an engineer is and that that part

of being okay with that is just

continuing to learn like enjoy learning

enjoy things being disrupted and try to

stick with it you’re not going to keep

up with everything that’s impossible but

just be open to things new ideas see

what other people doing and be open to

them I think yeah be open yeah just be

open and just like watch read everything

I know as much as you can but still take

time you’re not tech stuff oh it’s my

kind of very general yeah that’s a great

recommendation and as you know I ask

questions to ask everyone to to be able

to ask questions to you and then it flow

on the social networks on and also

through email and I go – final question

for you or an extra question that is

from Lizzy kodi neeya from Twitter see

he asked me to ask her how you learned

well what is your learning process for

new things your routine what what do you

do for instance when you have to

investigate what you are talking about

right today what’s your process – to

learn it that’s a great question because

I just mentioned that it’s really

important to learn new things um you

kind of have to have a lot of strategies

you know the best best case scenario is

that you’re doing a new thing at work

and you get to use some new API like

that’s that’s a dream right that

hey I have a new feature to write and I

get to use motion layout for it that

doesn’t always happen so you kind of

have to have different strategies I

think the most important thing is to I

think well I want to say force yourself

to learn is a little bit strong but I

think that holding yourself accountable

to learning it is a good strategy set

yourself a deadline set yourself a goal

and have something come out of that so

something I’ve done like and this is

like a look this is totally I think a

totally fair strategy is to say okay I

want to learn this thing and in order to

make myself learn it I will commit to

giving an introduction we talked about

it at a meet up in two months I say that

and I caution people not to just read

the documentation and go just and read

documentation people but you know having

a goal where you can say okay I want to

learn how to do this thing I’m gonna

want to learn the things that are hard

that the documentation might not cover

or you know if a new release came out

I’m going to focus on the new things and

I’m gonna tell people about it and I

think that’s like it’s like personal

accountability I think my friend

Christina Lee called it like that

accountability is that you have to kind

of you know it’s just like school right

would you learn it’s just sometimes like

at school like I don’t think I would

have studied certain chapters if I

didn’t have to have a test on it so you

kind of have to test your knowledge if

that can’t be at work then do it for me

too but like at work you know any

opportunity you can I would I would try

to push for new things and especially in

mobile you have to do that I think

obviously like the ability for you to do

that will vary based on what your

product is like obviously if you’re with

a big company that handles personal

information financial information

there’s amount of risk that you can

visually have so much risk you can take

but at the same time part of your job as

an engineer is learning how to gauge

risk and learning you know how to say

okay I think it’s safe for us to try

this new thing here and providing

yourself and your team the appertains to

learn that because I mean there’s a risk

in staying keeping old technology anyway

so I think that something that is also a

good strategy to do is just to learn

when when a new thing will benefit you

and when you can

integrating it at work and that’s also

kind of a way that we learn new things

one of my team teammates vishnu raj

event is really good at this he keeps up

with the new things and when he sees a

situation where you know it’s low-risk

it’s like kind of isolated it and we

would benefit from it

he just says hey why don’t we try this

new thing and of course we discuss it

and decide hey should we use this new

thing but I think keeping that question

of hey is this going to be Bennett is

can we can we benefit from this and can

we try this well let’s keep that at the

front of your mind I think and that way

you create again situations for yourself

to learn new things and for other people

to learn new things and I think that’s

just as important and I’ve said things

like have a side project like if you’re

like many of us and you have a side

project or a dream app that’s obviously

a great place to learn new things we

don’t know us all the time for it but

yeah like finding opportunity at work

you know just try new things try to give

a talk about it challenge yourself those

are all kind of like my different

strategies for learning different things

it depends on what it is of course but

it’s a good toolbox for trying to

sneaking in learning new things yeah

personally the way that I found that it

helps me learn something but in the

deepest way is to teach it because when

you teach something people will ask

question that you haven’t done to

yourself beforehand and that helps you

keep growing on that matter because even

if you use it on your own art so

probably people that are around you are

learning with you on and using the same

techniques that you are using but

somebody from the outside suddenly

thinks about something that you hadn’t

thought before that you gave for granted

and that makes you realize that you

didn’t understand it completely yeah

yeah and I think that’s the intimidating

part of like doing this kind of teaching

people but it also can be very rewarding

like you said like people will have a

perspective or think of it something you

didn’t think of and it’s easy to be it’s

a I’m scared of that all the time like

oh that’s the question I don’t know

that’s okay like that is totally fine I

again easier to say than to feel but

that that’s a great I think that’s a

great point I mean everybody’s learning

so

there’s probably something that you just

said that someone else didn’t know so

just kind of it’s a given back and forth

and yeah it’s it’s very rewarding and

and definitely it definitely pushes you

I think when you learn I think that’s

really totally on point yes it’s on a

great a great thing also that it even

when you are giving to people they will

receive that in exchange and you learn

the topic much more deeply that if you

didn’t do it self yes another thing to

do encourage people sharing their

knowledge I think we learn a lot in the

process yes yes so it’s a little bit

selfish but also it’s like altruistic

and selfish I win wins exactly all kinds

of perks for you okay verify so thank

you so much for this part of the

interview and now when when you’re ready

we can start with the natok

okay great let me just get a couple of

notes up so yes like I mentioned so this

is actually is something that you know

I’ve kind of forced myself to learn it’s

like a brand new thing and I guess for

you just to let folks know right I think

one of my favorite things about being a

mobile developer is you I I’ve always

been kind of attracted to you I I think

the idea of working on on things that

people interact with and the kind of can

be delightful or helpful is kind of what

gets me out of bed in the morning and

kind of what can you see my screen

you had a bed in the morning so I

absolutely love UI things and so one of

the things that I’ve been most excited

about the last couple of years is

constraint layout right is constraint

layout which hopefully folks have been a

little bit familiar with but I guess you

can kind of think of it as there we go

you know for those of you who maybe have

not tried constraint layout yet you know

it’s basically this brand-new layout

that allows you to position and size

things relative to each other but in a

more efficient way and I think a more a

high-level and more kind of like

organized way than we had before with

sailing relative layout and things like

that and so I’ve done a few talks on

constraint ly I think there’s a lot of

amazing features on it so this

particular talk is called cool

constraint layout but it’s 2.0 first

because it’s kind of a second version of

this talk

I’m not going to talk about the basics

of constraint layout but it’s also 2.0

because we’re going to talk about

constraint layout 2.0

and I think it’s really interesting

because last year around April

constraint Liat 1.1 was announced and

then about two seconds later they they

well they released 1.1 then in about two

seconds later they announced 2.0 and

there’s a lot of really cool things

about constraint Leah and I actually so

I’m gonna say I’m a huge fan of the two

gentlemen that work on constraint layout

John Hufford and nickel over art on the

Android team and obviously like just as

an engineer they put so much thought and

also they listen so much to what we need

and I think that if you’ve used

constraint layout one but you haven’t

gone to constraint layout like 1.1 and

feeling that they’ve kind of taken in a

lot of feedback like listen to the use

cases that people are presenting and try

to build on top of what they already

have to make layout easier and I think

that overall you know like layout and

Android can be messy especially if

you’ve been doing Android for a while

you know at some point you know

someone’s gonna ask you something weird

hopefully they ask you to do something

on the box just like you know use you

know like the nice material components

that we have now or things out of the

box and just call it a day but very

often you have to do very specialized

things and animate something or write a

custom view and things like that I think

that you know like other things that

Google has been introducing they’re

trying to raise the level right so like

you know material and like you know like

the support library and like jetpack I

feel like it Google is trying to give us

all these tools to kind of give us a

better baseline right so we

has to do less custom work less kind of

fiddling and kind of concentrate more on

building beautiful ui/ux and I really

strongly feel that there’s a lot of

really great ideas and constraint lay

out that kind of contribute to that so

anyway so I’m not gonna go to constraint

layout too much but basically idea is

that you define constraints basically

relationships between views to size and

position things and that’s yeah that’s

pretty much how constraint layout one

word and in constraint layout too

there’s kind of like a lot again a lot

of features that I think that are really

good answers to common problems that we

have so take on demonstrate this I wrote

a little app with kind of using

different features so use my emulator

I’ve got a couple things going but I’m

actually gonna go back to here for a

second so this is something that I know

I’ve run into and it’s kind of like

tricky positioning and I think that a

problem I know I run into when I’m

developing a new screen is that you get

designs and they’re they’re beautiful

everything is kind of looking lovely

everything is kind of proportioned well

and then you go and sit down and you

start putting in real data and things

don’t behave the way you want them to so

generally in constraint layout you you

kind of position in size things in a

relative layout like way right you say

to the start of this to the left of this

to the to match this thing to wrap its

content and those are pretty I think

concrete right you can kind of very

easily see the connection between the

view your positioning and sizing and the

view that you’re kind of doing the

positioning and sizing relative to but

there’s a lot of really wonderful

features in constraint layout that are

more we’ll call them virtual helpers

where so technically their views but

really they there are things that aren’t

rendered to the screen but that just

help you describe relationships in a

better way and barriers are one of those

things so if we look at this example so

this kind of happens we do this a lot in

Android right we have an image yes and

text and we wanted to kind of position

them like with the relationships to each

other so right now I have an image

and that image is aligned it’s start

edge is aligned to be what did I

actually lied to is aligned to the end

of this title so as my title like

changes so if I change the actual

content in this title the image will

actually range to align with the end of

it with this fine-ish

but as you can see it becomes really

dependent on the grader that I have in

here and if you see here I have a long

title but a very long subtitle then I’ve

coming into this like you know clipping

issue and I mean I guess the really

naive thing you could do it’s like well

okay the Scriptures are kind of long

maybe I’ll just go ahead and instead of

positioning this title I’ll position it

next to the description cool that works

until obviously you get some other data

and so obviously I mean and I’ve run

this exact issue and you know there’s

before there was no good way to figure

out okay what do I do now there’s

barriers so barriers are virtual

guidelines so if you’ve used constraint

land a bit you know that there are these

kind of like helpers called guidelines

which look very much like if you look at

the material guideline in material

design guidelines and you see like he

lines the idea of like you want to align

content along lines there are these kind

of like views that basically act as

guidelines so they be they form

horizontal and vertical kind of points

that you could anchor views to now

barrier is very similar to that but

rather than say being a specific you

know percent across a parent or Pacific

a specific xy-coordinate barriers

basically allow you to define a kind of

a guideline but based on which view and

a group of views is furthest along in

one direction so the easiest way to kind

of show that is if I say create a

barrier and again a barrier like under

the hood is a view but it’s a view that

doesn’t get rendered and is a view just

there for positioning so you don’t ever

see it so I’ve got this like barrier tag

I’m gonna give it an ID um routes ID and

like width and height don’t really do

anything I just kind of put wrapped

rock content in there just to fill it

out and so that lint will yell at me and

then you specify a direction so here I’m

going to specify end and basically the

direction of the bearer is basically the

site at which constraint layout will

look at and see which view is basically

positioned furthest out in that

direction so I’m going to specify some

views that I want the constraint layout

to look at so I’m gonna do see image

title oops and this is the tricky part

with some of these tags is that when you

have these like kind of groups these

comma-separated list of view IDs number

one don’t put it at ID in them and

number two I don’t think we’re getting

autocomplete yet save be careful um as

you can see here in the preview it’s

already created this barrier so this

blue dotted line is the barrier and so

that’s my virtual help of my virtual

guide line and it will actually again

try to figure out which view is furthest

out in the ends so like basically this

position ah since we’re doing left-right

the furthest view to the right and as I

change that barrier will reposition

itself now based on whatever view that I

specified this barrier is you know for

this right and what I can do then is

rather than positioning my image to be

at the end of this image description or

image title I can set it to realign to

the barrier and for free basically and

without me having to worry about okay is

this title shorter or is a description

shorter I get this nice alignment I’m

gonna I just love this feature it’s just

the idea that okay sometimes we have

data to deal with we have data at

different lengths we don’t want to

hard-code things because on Android we

have different screen devices screen

size and screen densities we try not to

like hard code things and this is just

another tool to help us with that and I

this just feels really it really feels

to me like a feature that someone said

hey I have this problem how do you solve

this it really feels like again this is

one of those answers to the problems

it’s one of my favorite kind of things

and again you can do it top left or top

bottom start end you should always you

start ends not left right or left right

so that we can do RTL and LCL LTR

correctly but yeah so that’s barriers um

and again great tool to use it’s kind of

crazy

it’s not always apparent when you need

them but when you need them it’s just

fantastic

so another kind of thing that you might

have heard of is groups so groups are

kind of like another one of these

virtual helper things under the hood

it’s of you but really it’s just a way

for you to define relationships between

one or more views and then to be able to

toggle the visibility of that group of

views so here I just define a group so

this group lives inside of my constraint

layout and again it would hide anything

that doesn’t quite matter it’s again

it’s a virtual view it won’t get

rendered so yeah but again I’m gonna

define a relationship between two or

more views and I do that by providing

some IDs so these are IDs from the views

that I had up here in my barrier example

and they’re gonna be comma separated

again we don’t get any autocomplete yet

although if you do type in something

that doesn’t exist it will check it at

runtime it’s just it’s not helping you

with the autocomplete so that’s just

everywhere and then so if I’m gonna pull

up let me actually run this real quick

so so here in my emulator I have my

barriers example now right now the

visibility of this group that I’ve

created from kind of all these

components is set to visible if I set it

to John and I go ahead and run again and

hope your instrument actually works that

barrier is gone I have my next example

coming up so again it’s just a really

sick synced way of saying hey I want all

of these to kind of form a unit like a

UI kind of section almost and I want to

toggle the visibility gone I’ve gone

invisible kind of without having to say

this one this one this one this one in

this one like individually setting the

visibility of each of them so that’s

pretty handy I know I’ve written so many

functions where I try to like be fancy

and like trying to make my code drier

and say okay like pass in like an array

of IDs and like say you don’t have to do

any more you can use groups I’m just

right oh my gosh it’s so nice or yeah

and I used like butter-knife actions and

that was great but being able to do so

much nicer um and I think what’s really

nice about doing it constraint layout is

that it kind of gives

you a high-level tag right so then so

that a couple of things you don’t have

to kind of do some things in code and

some things in XML you get the kind of

nice high level organization of your

code right you can you can specify this

kind of logical group in the XML which

is really nice and it’s easy to kind of

look at the XML say okay I see this is a

group and they’re all visible or

invisible or gone so I know something

that everyone probably runs into at some

point is the need to size things based

on a percentage of the parents and I

know we have percent layout now we have

that kind of functionality but inside of

constraint layout itself so these are

present constraints and again it’s

basically saying hey I want to align or

size something based on some percentage

of the parents so a lot of times you’ll

say okay I want the margin GB 25% of

like my parent or some like that I’m

here I have a very simple example I have

three views

they’re just views they’re kind of

aligned to each other and the way that

percent constraints work is that you use

this 0dp so just like in linear layout

or in kind of other kind of constraint

layout features when you set a dimension

to 0dp it’s almost like you turn on like

a special mode where you can access kind

of very specialized sizing and that’s

called match constraint so basically

saying okay match whatever constraint

that you set with other properties and

here I have my width right so I want to

size my width of these views by percents

so I set each of them to 0 DP which is

match constraint and then I actually

have to give it a constraint to match

and I do that here so here each of these

get a width constraint with percents and

I get passed at a floating point value

between 0 and 1 kind of aligned

everything as usual and so I have my

first purple view taking a 50% and the

other two taking up you know 25% if I

want to do something silly like let’s

just make it like 80% and see 15 or 15

and then we’ll be 5 and I think that

adds up to 100 yeah

and as you can see here it’s pretty

simple to again use percents and just

change just a floating point value to

get that nice and sizing so and that’s

in constraint Li at one point one and

you can use those so something really

interesting is circular constraints so I

don’t know if any of y’all remember back

to like say not sure which class it be

but like one of those math classes we

learn about polar coordinates so there’s

there’s different ways of there’s

different coordinate systems right where

you can specify the position of

something typically we’re very used to x

and y but another way of doing it is

with polar coordinates where you have

say a circle you have a radius from the

center of that circle and an angle

around that circle and that’s just an

alternate way of defining where

something lives in a plane well we can

do that now with constraint layout and

it’s basically that’s exactly what

circular constraints are their polar

coordinates for views inside of a

constraint layout and I have a really

silly example so I have an Android here

and I have this little pink smartphone

and it’s actually circularly constrained

to this Android so how it works is

instead of say constraining start and

top bottom you know kind of the four

normal edges you’re going to specify

another view or another target view

helper that you want to constrain your

view to so in here’s case lacustrine

circle I’m specifying it to be icon

Android so I’m telling this smartphone

icon that you’re going to be centered

around are you’re going to be positioned

around us relative to a circle around

the the Android the angle at which

you’re going to be is 300 and then the

radius of your Center from your the view

that you’re a kind of a line of

positioned relative to is going to be a

DDP and so here I have I guess from 12

o’clock is 0 300 degrees and then a DDP

so if I change it let’s put it at no no

lot bigger radius

my insta run you can see it should be

let’s see it should be here there we go

and it’s a little bit further and that’s

pretty much it it’s alright I mean I

know this is like a very specialized

kind of measurement but and I asked when

I first talked about this I was like

okay anyone give me some examples of

things that you can do I know Andrew

Kelly gave some examples of like you

know doing planets and like stars but

you can also do like clocks of course as

well I think Emily only gave someone

mentioned that they worked on

kind of like nest like a thermostat you

know so it’s like a round interface and

then they had numbers around it so you

can certainly do that as well and of

course you can you can circularly

constrain things around each other so if

I actually add another smartphone I can

circularly constrain a second one Oh see

I can the constrain things to others so

it’s really interesting again this will

kind of circumvent this will replace any

start and top/bottom but it’s just a

really cool tool in the toolbox

especially if you’re working on I guess

circular interfaces that’s pretty cool

and something in 1.1 all right finally

placeholders so corners are really neat

um it’s the site Nia grits you know I

think one of my favorite things about

constraint layout is this idea that oops

let me get rid of it

um so I think what constraint Leah in

general has tried to do is to make it

because to make transitioning and can

make thinking of ray outs with different

like kind of like being able free to

define alternative layouts alternative

positioning for things very easily if

you’re familiar with constraint set

that’s one way to do it placeholders is

another way to do it I really like

placeholder this idea of again it’s a

virtual helper so it’s a view under

under the hood but really is this idea

of making a position a position of

layout params like sizing and kind of

left right top bottom making that kind

of its own entity within the layout and

rather than you thinking about it as

the top left right bottom size of a view

you can think about it s swapping of you

between two different places to

different like sets of sets of layout

programs so just a really actually

illustrate what I’m talking about

so again a placeholder is like a virtual

helper so it’s gonna be like a view tag

in your constraint layout and you just

specify some layout params just pretend

that you’re actually laying that view

out and so you give it start end top

bottom margins and what let’s see what

we can do is specify this content so the

placeholder is is just waiting for of

you to be put into it

Oh waiting for of you to be assigned to

it so whenever if you gets assigned to a

placeholder that placeholder does the

work of setting the layout params on

that view to match the layout params of

this placeholder so what I have here is

two placeholders primary and alt so

those are my two positions and I

actually have some code inside of so I

have like I’m some code that will

actually swap these views second and I

put it haha so basically what you do is

if you want to move a view from one

place which will holder to another you

basically let the placeholder that you

want to switch to you know that hey here

is the view idea of the view that is not

gonna be your content so what’s

happening is here I have a click

listener that listens to the the click

on this button and it runs this method

and basically it says okay if you want

to swap go from whatever placeholder you

were to the other one and you do that by

calling set Content ID now it’s really

important actually that when you’re

moving a view from one to the other

and you don’t want to use that old

placeholder anymore you have to set you

basically had to clear out the content

otherwise you’re going to be have having

both placeholders kind of competing to

set the layout params in that view but

basically that’s all I’m doing here this

function just swapping between one

placeholder in the other and claim the

other one out and I get this really nice

ability to change the parameter a sink

and again it’s kind of a much more kind

of high-level way of thinking about

positioning the view it’s like okay I

want to in this spot or in this spot so

if you have content that you know might

be expanding or just might have two

different positions based on some

parameters it’s a really great way of

doing it yeah you know you can make it

fancier if you want to add like like a

simple transmission you can do that as

well so that you can go ahead and

animate the transition and what’s really

neat as well is that it’s not just

you’re not just like kind of stuck with

just swapping just swapping kind of

views around you can actually say it let

me see it so let me add another

placeholder image like this and what I’m

gonna do is I want to say okay

so this the second image is gonna start

out as the content of my second

placeholder some way right my larger

placeholder is gonna have the second

view that it is created and my first

placeholder is gonna have the original

view and actually access to a little

more changes so rather than just

swapping out and clearing the old

placeholder I’m gonna go ahead and

exchange them so it’s more like this so

I have two views now two different view

IDs and whenever I cook that button I’m

actually just gonna swap the content

swap the view ID that is set there and

if I actually go ahead and run this you

can see that what I do wrong you see

this said Content ID let’s see that’s

something wrong about see the content

okay okay I definitely did something

wrong I cannot see if they did really so

um

live coding is fun but I promise that

you can actually get these two to swap

appropriately oh maybe I just need to

run it again but yeah you can’t actually

rather than just simply moving one view

to between two places is to actually get

them to swap ah there we go now rebuilt

but again this is just a really light

way for you to change between kind of

two different positions or to move

content around very easily within your

view so with that in mind I think again

like I mentioned before one of my

favorite things about constraint Leia is

this idea of I think making like layout

of views less tied into the layout sorry

let’s tide out into the VIP list tied

into the view hierarchy itself so in

episode I think 50 of chet haase and

torn hobbies podcasts Android developers

back house I think was 50

they had John and Nicola on and Nicholas

has something that I’m never gonna

forget and he said that the goal like

the what the thing that they’re driving

towards with like these components is to

separate the view hierarchy from the

layout hierarchy which i think is a hard

thing for us to understand as Android

developers at least up until now because

it feels like the layout is the view

right but I think there’s this idea of

separating out views and kind of like

the content and like the relationship

between different views in your UI from

where they have to be so like for

example when I say like layout views

right I have to have views aware of each

other of who’s like left or what and

right and what and like you know how

things wrap because I want the view to

look I want the layout to look a certain

way but that might not really have

anything to do with like the

relationship of one piece of content to

the other of one button to the other

it’s just connections I have to make to

put things where I want to put them and

I think like some of these features that

we’re seeing are kind of separating that

so you can have a set of views a set of

relationships which

widgets items in a in a layout but then

have how they’re arranged how they

relate to each other be a little more

fluid a little more dynamic and that’s

something that I think in straight

layout gives you and so there’s just

like a concept in constraint layout

Koko’s trainsets

where a constraint set is literally just

a set of constraints it’s a bunch of

positions a bunch of sizes of all of the

views within a layout and I can use

those constraint sets to swap really

easily between two different layouts so

I don’t have to size everything myself I

don’t have to you know manually set

layout params and do this whole set lab

prams thing I just get to I just get to

say hey swap between this set and the

other and that’s kind of been one of my

favorite things in constraint set and

this is the code that I am using to kind

of do what I’m doing here I have two

separate layout files activity it’s a

one layout file and another layout file

so it’s this alt file and this original

file and all I’ve done is to basically

parse these layout files using

constraint layout into two sets and all

I do is just swap between the two of

them I hit a button I apply one

constraint set or I can apply the other

constraint set I add in some default

transitions and I get this delightful

transition and we’ve had that for the

last couple years from constraint set or

constraint layout rather but just like

everything else things can be better and

I mean this is really good I think just

kind of just just for a good start but

if you keep looking at this and you kind

of look at it critically there’s some

things that could be better right number

one you can kind of see that at times I

wish I could slows down but when I

transition sometimes the text tends to

overlap the image you know cuz a they

kind of run together and also like I

don’t have a lot of control over this

right I can only swap between the two I

don’t I can’t do much with the

transition I can’t slow things down I

can and say hey can you move this before

that it’s a kind of safe fire-and-forget

so what can we do about it

well we can use motion layout so motion

layout is a subclass of constraint

layout and it’s kind of a lot of things

together so I think what’s what can be

very hard about animating things on

Andrew

that we have a lot of animation systems

we have transitions we have like

interpret like and we have like sorry

the like animators like property

animator is we have all these different

systems and you know they’re they’re

good in different cases but nothing ever

seems quite perfect

all for everything right so you have

like property animators and value

animators which allow you really tight

control over how things animate but that

you know aren’t you know that all done

in code they’re very kind of you have to

be very specific and you’re basically

down again in the nitty-gritty of the

code doing things but you get a lot of

control whereas you have things like you

know seams and like transitions which

are more high-level more declarative

easier to read probably easier to

maintain in a very real way but that

aren’t that you know that aren’t very

fine-tuned you can’t it’s very hard to

get some sometimes very custom behavior

out of these features so I think what’s

really interesting about motion layout

is that it’s kind of like all of its a

little bit of all these other things I

kind of wrapped into one it’s got some

of transition manager in it it’s got

some value property animator value a

property animator in it and it’s I think

it’s it’s it’s trying to bridge this gap

between very complex very specific

animation but also transitions and and

linking you know these animations to

high level concepts like transitioning

from one layout to the other so I would

actually highly recommend that you go to

niccola’s series he’s got a whole medium

series called introduction of motion

layout and he lays out this whole kind

of like theory and like everything about

motion layout but there’s something that

he mentions that he is kind of like one

of my favorite like takeaways is that

the idea like one of the the main ideas

behind motion layout is to have C Keable

transitions so rather than having these

transitions that you kind of just you

know start and forget about you have

transitions that you can go to any point

in the middle of that transition you can

instantly go to any any kind of

intermediary point between the start and

end state and you can have more control

and and more than just see Keable is

that you we think that instead of just

kind of again firing forgetting we can

tie transitions to user interaction and

on top of all that on top of control we

have a declarative easier to read easier

to maintain and easier to implement kind

of structure for doing this animation so

I did all this talking let’s actually

see what all this is about

so talk back dr. Cox so I want to

understate this example so I have this

is actually two layouts that I’m just

doing the transition as soon as I

navigate to the activity I kind of have

a post delayed callback that just pushes

from one constraint set to the other

that activity and that’s where it is

right so I’m using kind of like the

tools that we had before constraint set

to swap between these two things that’s

fine again I don’t have a lot of control

over this I’m I’m using postal eight I’m

hoping that it goes off and then I have

no control over its starting at stopping

or any intermediary states so I kind of

want to build on this and show you how

step by step motion like some of these

things easier and nicer and kind of more

under your control so one thing that is

not you know it’s not bad but it’s not

great about this is that again I kind of

have this like separation between two

layouts that are written in XML and then

the actual code that transitions between

them is in in this case column is in

code right so there’s this disconnect

it’s not like all of my transition

behavior is nicely in one place or the

other it’s it’s in two places so one of

the benefits of motion layout is that it

starts to kind of move layout and

transitions kind of back to where we

kind of back in to the kind of XML

declarative world so there are new

resources that you get with motion

layout so there X and all resources so

they live in this XML asset file and

this new resource is called a motion

scene so motion scene is basically a

declaration of a relationship of a

transition and it basically allows you

to say hey I have a start state hey I

have an end state and here is how I want

to get from one to the other and that’s

all emotion scene is so it’s XML and the

motion light is able to interpret this

and then do all of the work of the

transition and kind of hooking up these

transitions to

user interaction so this is a really

simple one so I have my two layouts that

I had before okay these are the two

layouts that this transitions from when

I do that constraint set swap but rather

than me doing the work in code of

creating constraint set cloning this

layout file and then applying it to a

constraint layout that I’ve pulled the

reference from somewhere else I can

write this XML file and I can declare it

if say differently say hey I want to

transition from this layout set or a set

of constraints to this set of constraint

I can’t straight set start and my

constraint set int and furthermore

rather than just having it kind of fire

off at some random point from my post

laid call back I can actually say hey I

want this transition to happen as I

swipe so I can trigger this transition

on a non swipe and I can say hey how

about on my Android I want to listen to

a drag that starts at the you know it’s

kind of a line to the top edge of my

Android and I want that transition to

basically follow that swipe that swiping

so I’ll show you what it looks like in

just a second but what’s really neat is

that I have this declaration right I

have this description of how my Landsat

search interest transition and if I go

to motion layout so first I have to

change this to the egg okay so now I’ve

changed it to the actual motion layout

subclass and then what I do is that

there’s this new by motion scene okay

and then what I do is I will give it the

name of a scene it the name of the

attributes I’m gonna go to this ranch

just 3ds to pack as much

I never remember the name is a great

description so so rather than me doing

this in code I want to say hey motion

layout here is a file that tells you how

to behave and then I pass it this XML

resource which again that which is this

resource here and I’m just gonna have to

turn off this okay so I turned off and

then what I do is if I run that did you

and like my emulator and emotion layout

alright so number one it’s not

transitioning immediately because I pick

out the personally well what’s happening

now is if I actually swipe down and drag

this Android you can see that the

transitions actually following the swipe

so emotionally is doing the work of

mapping each like point in this

transition to the swipe and again I

didn’t have to do an animator I didn’t

have to do gesture like I didn’t have to

override any gesture listeners I just

specified XML and that’s it and that’s

kind of like the power of this

declarative way of doing it and what’s

really neat is that again like you kind

of packaged together the layout and the

transition like how like how you move

between one transition the other but

you’re not just kind of limited to just

doing this because I think one thing

that also is like less ideal about

having these separate layouts is that

the layout could be like 80% the same

and I want to say change the size or

change like the margin but I still like

you know you think it’s ready set I

still might have to like basically

copy/paste like the whole file over

again and that’s kind of annoying it and

it’s it it’s less extensible less

maintainable right because you know

there’s just a lot more that you could

you know type wrong it just it’s just

not efficient so what you can do instead

of just providing different layouts you

can actually describe changes in the

motion scene so rather than having a

layout as my start state and end state I

can actually define constraint sets

inside of my motion scene that will

allow me to transition to specify okay

what exactly is changing so for now

kind of a moving clouds in my Android

here my androids kind of dropping down

from the clouds down to earth I’m gonna

go ahead and just transition my Android

for now just so we can focus on how this

works so a lot of this looks kind of

similar right I got my own set up my

transition but rather than having a

layout I have these two constraints

that’s here that are my start in state

and I specify just the layout params

that I want from my Android icon at the

start and I specify the layout params

that I want for it at the end and that’s

it if I go back to my motion layout

activity

I changed the right description to be my

other scene so this one so rather than

using that kind of only out references

I’m just gonna describe everything at

the file I’m gonna go ahead and run it I

probably should have used instant runs a

little bit faster that’s okay and then

if I go back you can see that again

because I just moved the Android you can

just see that just the Android is moving

but again rather than having to have two

separate layout files that are mostly

the same I can just specify Delta’s and

again that just is just giving you more

power to say very explicitly what are

you doing and making it more

maintainable more readable and I just

love that about this is that instead of

just again coding and trying to like do

things so explicitly and so I guess

imperative lis we’re saying hey at a

high level this is what’s changing it’s

it just feels like a much friendlier and

much more straightforward way of doing

this kind of animations so that’s the

kind of fill things out I’m gonna fill

in the rest of my clouds so that we can

go ahead and looks like yeah I’ll make

my class move again so everything is

linked to these live coding is fun let

me try that again

maybe Instagram is just a little bit

fussy all right

layouts and so there’s a lot that you

can do with this though okay it’s not

just for kind of moving between one and

say and the other and it’s not just

about layout programs there’s a lot that

you can do with motion layout that is

really do fascinating um and I think

that was one thing that was hard about

constraint set is that constraint

changing from one constraint set to the

other only picked up really layout

params only only anything that was

basically layout underscore something

that’s the only thing that constraints

that was able to choose so if you say

change text color or change like a

drawable it wouldn’t pick that up and

that’s kind of difficult right because

when we’re transitioning it’s not just

positioned in sides that are changing

often it’s like you know opacity and

other things that we want to use to make

like a delightful experience so on top

of this kind of associating I get and

tying together user input with

transitions we actually get kind of this

idea of custom attributes that we’re not

just relegated to layouts we can change

a little bit more the kind of visual and

visual and styling aspects of layouts so

let’s say that rather than just like my

android shading position I want to

change its color so what I can do is

actually add thing called a custom

attribute so this idea is just basically

giving you kind of more freedom to

specify something that changes that is

going to be interpolated from the start

state to an ends later so let’s say I do

I want to change the tinting so I’m

going to specify an attribute name now

the attribute name has to be an

attribute that can be set using this

like syntax so it has to has a setter so

you can turn any property on a view that

is a setter into a custom attribute so

in this case there’s like a set color

filter function and so that’s basically

what I’m using to generate this

attribute name so that color filter so I

can the brain becomes color filter and

what I can do is set a custom color

value I was going to be the start value

of my

um color I’m actually gonna pull this

out so what’s interesting is that for

the type the parameter type has to match

so color filter actually takes a color

value not a color drawable resource so

this is why I’m putting in hex start out

with gray so we can end with a nice

colorful Android so here’s my custom

attribute so basically I’m saying OK in

the start constraint set my Android has

these layout constraints but it also

should have this color at the start

State and then what I can do is I go

down to my end state and I’ll say okay

now at the end of the transition I want

instead for my Android to have this

color so again all we’re doing is this

defining start and end States and then

hoping that motion layout can do the

magic for us so if I run that emotion

layout now hopefully this looks pretty

good because I my Android is not green

it was our greatest green before or

black before but as you can see as I

move the Android it’s interpolating from

that gray to green and again you could

totally do this without motion layout

but it would take property animators and

all this kind of stuff and a lot of

stuff in like Kotlin or java code but

here I remember myself myself having

done that yeah right yeah the RGB like

yeah but here I just started a set a

start and start state and state and it

does it for me and you know I I mean I

love property and value animators I’m

never gonna stop using them I don’t

think until they take them away but just

imagine how much easier this is for you

to read and how now that now you’re

actually associating a aspect of the

transition with the rest of the

transition information right

you’re not having these kind of

disparate parts of your transition

living a different part of your code and

I just think that’s really valuable and

there’s a lot that you can do with

custom attributes again if there’s a

setter for it you can make a custom

attribute for it you are limited though

like again that the parameter type so so

say like here’s a a set attribute so

whatever this parameter is whatever this

parameter is matters and there’s only

like a small set of custom values that

you can set so here you can see these

are kind of like the possible types that

the setter can take so like color

drawable value like to mention some

integers strings but there’s a lot you

can do with that it is limited for you

know probably for feasibility reasons

but there’s a lot you can do so apart

from this so it’s become really easy to

kind of interpret late but again like we

kind of talked about you know it’s nice

when we don’t just kind of start a

transition and like you know set it and

forget it we’d rather have more control

and I think something that’s really

interesting is being able to really

fine-tune how things move so again my

previous example I mentioned well like

this is nice but the text kind of runs

over I don’t have a lot of control

everything kind of just is very like

linearly kind of like you know moving is

there anything I can do to kind of make

to kind of tweak this to really kind of

I don’t know do something different with

it and the answer is yes so if you were

like a flash person like I was back in

the day or if you’ve done After Effects

or any kind of like animation of movies

you probably are familiar with what

keyframes are so keyframes are also a

concept in motion layout so basically

think of this transition and think of

kind of intermediate et mederi points

along this transition so what motion lis

it lets you do is to think about

transitions in these pieces and that’s

using keyframes so keyframe is some

point along this transition where you

want to specifically state what you want

what you want the state to be so rather

than this kind of like linearly

interpolating I can say hey at like

halfway through I want this property to

have this value so I haven’t any most

easy ways to just kind of show you how

to how to do it

so basically motion layout will take a

transition divide it up into a hundred

pieces and allow you to set specific via

cific properties at any of those like

kind of like a hundred

stopping points so you do this by

specifying a keyframe set and in this

place let’s start simple so right now

when I’m my clouds are kind of the kind

of boring they just move in linearly

like shortest paths kind of thing let’s

see if we can kind of make them dance a

little bit so there’s a couple different

ways you can specify keyframes and

different a couple different ways you

can kind of I think it’s the words

perturb or or kind of alter like you

know the the Delta is along each of

those points so you can alter the

position so right now emotionally is

drawing a path from the start and end

state and then just you know moving the

icons along that path I can actually use

key positions to basically alter the

path of that so there’s a straight line

going from like the start and end and I

can actually kind of make the cloud have

you know kind of move a little bit off

of that kind of straight line shortest

path and I use that using a key position

so a key position you define by saying a

target so whatever view you want to

position and in this case say that I

want to do cloud let’s do this second

cloud okay so that’s the view that I’m

going to be kind of messing with right

and then thing is like with when you’re

kind of specifying position for things

it’s always going to matter like what

coordinate system you’re using or or

like like how you’re basically what’s

your frame of reference for defining a

position and for key positions there’s

three different ones I don’t ever really

remember the difference between the

three I have to kind of muddle around

and figure it out the you just want for

me to understand sprint relative so

basically what I’m going to do is I’m

going to tell the cloud how much off of

its past to move as some percentage of

the of the distance across the parent so

this is say zero and this is like a

hundred percent and I’ll say hey like at

this point I want you to be fifty

percent across the parent that’s

basically what parent role to this and

there’s again other like frames of

reference that you can use and again I’m

gonna say okay at some at whatever point

this is I want you to be all the way

across the parents so it at position one

hundred percent across the parent and

then I actually say what time this

happens at where’s my actual frame

position

oh right there’s a lot going on there so

basically I’ve just told emotion layout

that I want this cloud at 20 frames in

at 20 percent in or however you want to

think of it 20 percent into the

transition I want it to actually be at

this point in the parent and what

emotionally it will do it’s like it’ll

say okay you start here you end here you

want the cloud to be over here at frame

what else we can do is so we can also

just do this first so I set a keyframe

emotionally it’s going to do all of the

work and maybe a little hard to see but

as you can see whoop you can see that

now instead of going straight in and out

my clouds kind of meeting meeting that

frame position and going kind of kind of

again hitting that kind of middle

Waypoint and then that’s just basically

a way that you can kind of take that

transition to the next level you can

kind of change things and if you feel

like you know something is not as

athletically pleasing or you want to

kind of and we’re interest or makes them

more delightful that’s just another tool

that you have to do that so let’s see

now that’s keyframe position there’s

also key attributes so you’re not

necessarily gated to using like

positions you can actually use

attributes where I can set like middle a

kind of intermediary States for the

actual like other attributes like

opacity let’s do color so how would I

take my grand red icon and let’s say

that because I love Android so much I’m

going to turn my little Android red

let’s say like halfway through so it

creme 50 so 50 out of 100 so halfway

through I’m gonna say that and using

custom attribute that’s the color filter

which is the tinting on the image view

is going to be red

okay all right so again I’m just letting

the missional I know that for my I

thought my icon my android icon

I want halfway through the transition

for the color filter the color tinting

to be this value of bread that’s it

right so I run this on instant run

stream an emulator backup and as you can

see without any work from me it actually

is red

halfway through the transition and then

the start and end State are the same I

mean it it’s kind of this kind of a

silly example but again just the

declarative easy to read easy to like

experiment with ability you know the

ability that’s provides you for doing

all these like really delightful things

well this is not that their life was

kind of silly but giving you this power

to really control how transitions

transitions look it’s just so amazing to

me and I think that again it’s this idea

of keeping information keeping the the

things that you want this transition to

be into the same file and being able to

kind of very easily change and access

and read it it’s just so valuable so

let’s see what else can we do so you’re

not just relegated to swipe you can also

do on quick

so because again we very often want to

transition things on quick

it’s pretty easy there’s so what you can

do is like your transition tag you can

add into the trigger for on quick

you specify the thing that you want to

click to do something and you have a

couple quick actions you can follow the

transition between the start and state

you can jump to the end jump at the

start you can actually run the

transition from start to end I’m just

going to toggle it here and without

having to write any you know quick

listeners or anything like that I can go

ahead run this again and okay then I can

also just click that cloud and now I’m

able to transition between the two and

if I want to be something like fake

transition to end

um in surround first um

there’s other behaviors if you want kind

of like a reset button you can do that

so if I was here and I wanted to reset

transition I can again if I click it

again it’s already at the start so I

won’t do anything but there’s just so

many like diff

print things that you can do with this

okay

so there’s also like some other like

really cute little it’s not just like

attributes there’s a lot of other kind

of really nice tools that you can use

you can specify a custom interpolators

if you can actually stagger like kind of

like how the different kind of pieces

animate as well let’s see what else do

we have here

there’s also let’s see oh yeah nothing

that’s really interesting to me is

there’s some there’s a few called image

filter and it’s gonna you go ahead and

just hope your branch out reset hard

like I do just you just come through

that you normally breath everything says

it’s fine so um what’s really

interesting is that there’s some actual

extra widgets inside of like kind of

constraint layout 2.0 that allow you

just a really cool thing so there’s

really interesting view called image

filter view so it is an image view and

what’s really cool is that it actually

allows you to crossfade between two

different images and with image filter

view you’re gonna get this extra

attribute called alt source so you

define like a primary source like you

normally would with an image view and

then you provide us all source and then

what you can do inside of your motion

scene is use this attribute so there’s a

crossfade attribute on the image filter

view and that’s basically going to be a

kind of point between a transition from

the first image to your alternate image

and it’s probably easiest to see what it

is so in my start state I’m gonna start

the cross-faded float value too and at

my end state I’m gonna go ahead and set

it to float value 1 so more or less like

zero to a hundred percent and if I

actually run that all right and bring

this up

all right so instead of my Android I

have this kind of random clipart that I

got from my splash and so I have to

image sources here and since I set this

custom attribute and have a set a start

and end point for it in the transition

as I pull this down you can see it

starts crossfading between these two

states so as you can see without me

doing anything I was just using this

image filter view I can get this really

neat image filter this kind of cross

fade effect and also what I have here

and I’m trying to find the it’s just so

many new attributes I just could never

remember here so there’s actually a way

to debug this so earlier when I was kind

of messing with the path it’s kind of

hard to see but you can actually on

motion layout set show path true and of

course don’t do this for production but

it’ll actually show you the path that

your views will take in the transition

it’ll actually show you like like the

entire path that the motion emotionally

it will take each widget through and it

actually shows you key points or key

frames as well rather so this light pink

square is actually a key frame so if

you’re kind of doing a lot of fancy

stuff and you feel like you’re losing

track you can always turn the show pass

on true and you can always see kind of

what your views are doing and it kind of

helps you like still tweak and kind of

debug some things um let’s see so I

mentioned that Nicola said that in a

sense that they’re trying to make sequel

transitions and it’s not just that you

know you can that you’re just confined

to working within its motion scene you

can actually start listening to and

responding to the transition as well so

there’s quite a few features that work

with this but very simply if I wanted to

say let’s say they go to emotionally an

activity all right let’s say okay we go

back to the layout

alright let’s say I did something really

silly let’s say I add actual seekbar

okay let’s say that I wanted to take

Nicola literally and have a few bar be

able to move like my you know from one

state to the other in my layout I can

do that so I’m going to add a seat bar

and I’m gonna hook up that seat bar

inside of my activity and what’s really

neat is that promotion layout because

you know it’s aware of the transition or

its kind of center around transition it

actually has a progress property so you

know when you define a transition for

the motion layout and it kind of starts

entering that transition it keeps track

of the progress so I can just kind of

like this where I have a seat bar and

every time the user moved that seek bar

I can listen for that progress change in

the seat bar and then set that progress

on my motion layout and the motion

layout will understand oh hey you want

this point in the transition or you want

this point of transition so yeah I think

the procedure our progress comes in as

one to one hundred and integers where as

the progress on the motion layout is

float so that’s what’s going on here but

if I go ahead and run this you can see

that do I can actually seek through my

transition and basically again and

that’s again leveraging the fact that

the motion layout is aware of the

progress of the seat bar and there’s

there you can go the other way as well

so I think I think something that I’ve

heard a lot of people ask them for is

the ability to kind of respond to

different events within the transition

like maybe having something fire off

something else or once the transition is

done you want to do something so there’s

actually a transition listener class

that is on motion layout so motion

layout has a transition listener it’s an

interface and so what you can do is

something like this why don’t you like

that result

oh yeah Jenna because this is so it’s

only on motion layouts that changes to

make sure yeah okay so transition

listener so basically whenever the

motion layout is executing a transition

you’re going to get these callbacks

so when it starts when a certain trigger

happens when it changes when it’s

complete and what’s really neat about

this is

you know your transitions will have

different start and end IDs so if I go

back to my motion scene file you can

actually get back the start and end

state IDs resource IDs in these

callbacks which is pretty neat but here

I’m just gonna be kind of silly I’m

going to use my seat bar again and

rather than having the seek bar move the

transition I’m gonna have the transition

with a seat bar and kind of just reverse

the idea of setting the progress on them

and I don’t know when you’d actually

want to do this but again it’s the idea

that it’s not just kind of setting and

forgetting but that rather than the seek

bar moving the transition the transition

can move other elements so you can

respond to the transition you could

listen for when a certain transition

starts and do something there’s also in

kind of the latest version of motion

layout I think alpha 3 is got released

in December there’s a thing called key

triggers which is basically that it’s a

special keyframe that can fire callbacks

and I haven’t played around this is too

much successfully but if you go to Chris

Bane’s is I think his project TV we see

right so he if you go if you want a

really good example of this check out

Chris baines’s TV project he actually

has been using motion layout to kind of

reimplementation a out and other things

like that but he uses these new key

triggers and basically on a certain

frame position you can call a method on

that particular view that you have the

keyframe on but yeah I mean just it’s

crazy it’s just using this as XML these

like declarative things accessing things

in the views and again being able to

very describe in one place succinctly

through XML and not like explaining

things between code and XML how do you

want things transition you know and like

I would just encourage people to use

this and I think what’s gonna be really

interesting to see is like how this

helps us build more delightful you is

like I know that at least for us you

know animation is kind of a challenge

right I think motion design is still

something that I don’t know if we have

like you know if I know like for us

motion and animation is something that

we drive as developers rather than it’s

something that the designers drive and I

think that’s just more like

because material design and constant of

motion are relatively new we don’t have

you know I think people don’t know what

we’re capable of or and traditionally

animations been pretty difficult but you

can card to see kind of how these tools

how these declarative ways of describing

animations can help you work with your

designer to work with your product

people and be able to you know talk at a

high level what do you want these things

to do and to be able to kind of do them

easily like and maintain ibly and read

ibly so I encourage you to try it it’s

still alpha so of course I would I

wouldn’t go ripping out views and

replacing motion layout if it works just

keep stay with it but if you have

something new if you want to play around

with it I really highly encourage you to

do it

I’m sure Nicola has been asked is all

the time like is it ready and and of

course he’ll say yes but I’ve used it

myself in it I think it’s really great

and I think it’s definitely a way to go

and if you’ve listened to them talk

there’s actually a motion editor I think

they’re working on a motion editor which

is kind of like a After Effects the more

kind of timeline like they’re gonna

provide us like with a GUI images get

really cool yeah yeah but yeah oh wait

here is that yeah so something like this

so this is what our future might look

like where we have a timeline and we can

start kind of you know really

visualizing how animations work rather

than setting animators and coping and

I’m just really enthusiastic I think

this is gonna be just a new way to have

conversations and and explore and talk

about how we do these delightful things

and and hopefully it may get sus to a

better place easier place a more

maintainable place but anyway that’s

motion layout I really think people to

try it’s one of my new favorite things

and again I just see how ridiculously

easy it is to do cool things so I

encourage people to definitely give it a

go but yeah thank you so much it was

really cool it kind of things you can do

with a few lines of XML it’s synchronous

and I definitely have been in those

places with barriers Forex for instance

I’ve used constraint layout one at one

and I miss them

and it’s this keeps improving and

improving and I’m sure that is probably

the very first thing for many things in

the future so yeah I I agree at night I

think that it’s important that if you

like this or if you experiment and you

find problems or you have suggestions

you should definitely reach out to John

and Nicola on Twitter on reddit on

whatever wherever you can find them

because they’re very open and they want

to know what people what are the real

use cases what are you finding tricky

what do you need like they’re really

open and obviously they want to fix bugs

so I think that’s part of it as well as

just be open take advantage of it

they’re very nice gentleman you take

advantage of them and I mean that in a

nice way but you should also like maybe

this really great talk at the Android

dev summit I mean because now we have

motion Lea and the kind of other systems

it’s not like we’re throwing the other

ones away but if you kind of want an

overview right of everything get

animated at the Android dev some it was

a great talk and I think if you’re kind

of confused about where to start or

whether you really need it or like

what’s the excuse for you to try motion

layout you should definitely watch their

talk major décima nice thank you very

much for for the talk it was really

interesting and showed all the news we

have from girl in a constrained layout

sorry I always mix those and regarding

the questions I we only have one from

the audience the life happens if and if

if I different I personally I think

you’re not because you interview him

native world that he has something about

a topic we talked during the interview

and he was asking if we have any

thoughts or suggestions on networking

for those that live in areas without

local developer community that’s a

really good question um I mean for me I

think flak there’s that I feel like life

has just there’s been an explosion of

really good side communities and I think

yeah like I know that there’s like I’ll

show like so there’s so there’s like you

know for example the cotton line

clack is really great if you are a

Kotlin type person as I know like

Antonia and I both are and I think that

that’s like remote tools like this it’s

kind of hard because you had to discover

these communities but yeah to make up

for the fact if you don’t have a local

community you need to find them out

digitally which is can be a little bit

more difficult it is always easier to

connect people I think in person maybe

not maybe your mileage might vary but

there are like electronic communities

that you can reach out and and kind of

start building connections so there’s a

like I know there’s like Spanish

language Portuguese language Android

communities as well on slack

there’s a cotton Lang slack there’s kind

of women based ones as well like if

you’re like I thought I’ve heard of like

women techmakers for example also like I

know people think reddit is a scary

place but our Android dev is actually

moderated by some really amazing people

in the community probably many of them

you’ve heard of and that’s also a place

to kind of hop into conversations and

get talking to people so those are my

suggestions and don’t be scared I know

right it’s a scary place but the mods

work really hard to make the Android dev

subreddit not scary yeah I agree with if

you don’t have a physical place to go

it’s a little bit more difficult to to

engage with people right there are any

other ways and for instance up as who

you mentioned that the Quadling one is

very active and we for instance have one

force for Spanish people that is really

active to one and people there also can

can talk about many topics and and

connect with each other so it’s really

helpful too and and also social networks

yeah the thing is that Android

developers are usually very open so it’s

very easy to to connect with anyone

through any social networks and that can

also help maybe not for networking

because that’s a little bit more

difficult but those softening clear out

any questions or answer any of your your

possible doubts that you might have

it’s it’s also really helpful by

I agree that is much more difficult if

you cannot go to a physical place

because networking here it works better

if you are face to face but yeah I mean

that’s just it’s kind of like the remote

challenge right as we become more remote

or to more or less degrees is how do we

make these connections and maintain them

and it’s not perfect it’s not you know

it’s not as good but I think with things

like black and social media and things

like that it is easier it it does take

more work but it’s not impossible and

and like Ateneo saying I think Android

is obviously quite biased but I think

Android is like a really amazing

community and we do have like as he said

many open like we’re I think many of us

are very open and friendly and and just

eager to help you along and welcome you

as well so yes we have one last question

from Gabrielle he asks if if you use any

kind of snippets for Android studio yeah

I do I do

um I love live templates which is what I

was using I use using them heavily for

my prayers oh here but I love life

templates I try I think I try to balance

it like you know especially like you

know there’s already so many left

templates that are good for kind of

things that we do every day kind of that

same old stuff well I have to use these

less now but when we were you know if

you’re in fragment world and you have

all this boilerplate it’s very flexible

to be able to kind of do really nice

templatized live templates and kind of

cut down on work there also again I

don’t have like templates for all of the

new attributes in motion layout because

I tend to forget things a lot but I do

them use them like quite heavily I find

that it in general once I get them down

it helps me with like you know small

errors and things like that and

obviously for places where we still have

boilerplate and our cutland can’t help

us squeeze things down it helps a lot so

yeah I love live templates it takes a

little bit to I guess do

cute ones fancy ones I think there’s

actually a talk at Chicago Vrbata last

year about trying to leverage live live

templates I apologize I don’t remember

the name of it but yeah snippets all the

time even just for silly things like

comment enter comment headers and things

I just don’t want to keep writing over

and over again just I’m lazy I spent a

couple minutes of making the live

template but yeah I I think actually I

also have like if you’re on Mac there’s

also this tool called Alfred which is

like a like a launcher integrated search

and all kind of stuff it also has

snippets I think I’ve used it for other

snippets like I don’t know like four

code snippets I kind of use like Unicode

a lot for different things or ASCII art

sometimes if I have like certain things

I use my code all the time so I’ll put

them in the the the kind of like other

snippet kind of managers it’s it’s silly

but I like it

so yeah laziness is the mother of many

good programming inventions yes sir

okay so I think we we end here we don’t

have any more questions and so thank you

again so much for for dedicating this

time to us I really love to have you

here the second program and and that’s

it if anyone wants to connect with you

how could how can we do it yeah I fairly

active on twitter my handle is at Queen

code monkey my apologize is really long

I’ve had it since uni can’t really

change it now or you can also go to my

website which is randomly typing calm

and of course that by Chucky and my

channel which is youtube.com slash

Android dialogues dialogues like the UI

component not like the actual proper

English word but yeah Android dialects

but thank you so much for having me I uh

I am a big fan of you Antonio so I was

really uneasy and thank you so much for

doing this as well I know it’s like

obviously I know it’s a lot of work

doing things like this so I really

appreciate it so thank you so much I’m a

fan of you too

so the the feeling in goes goes in both

ways thank you so much

thank you and keep in contact and for

the ones that want to continue receiving

notifications all these interviews I

can’t spoil that that Nate evolving fat

will be in in February early but the

second half of February young and I keep

the other one for every hidden for now

but you can go to direct cash life and

during their and and I will email you

when there are new interviews scheduled

so here you can find it again thank you

so much and and see you bye-bye

[/expand]

5. Links mentioned during the interview

6. Subscribe to Droidkast.LIVE

If you don’t want to miss the following episodes, join the mailing list to receive new updates here.

I’ll come back soon with new awesome guests!