Slide 1

Slide 1 text

Developers The last line of UX defence @chris_h_codes UX

Slide 2

Slide 2 text

We want to make a good product

Slide 3

Slide 3 text

good product Business analysts Product owners Designers Project managers Developers

Slide 4

Slide 4 text

Business analysts Product owners Designers Project managers Developers

Slide 5

Slide 5 text

11010101011101000011101011101011010 Business analysts Product owners Designers Project managers Developers

Slide 6

Slide 6 text

Designers Developers Now Release date

Slide 7

Slide 7 text

So what can we do to help?

Slide 8

Slide 8 text

https://material.io/design

Slide 9

Slide 9 text

https://lawsofux.com

Slide 10

Slide 10 text

Yum yum yum!

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

CoordinatorLayout MotionLayout DynamicAnimation Paging ViewPager2 Material

Slide 16

Slide 16 text

DynamicAnimation https://www.youtube.com/watch?v=f3Lm8iOr4mE

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

Credit to Mohammad Majed Khan https:/ /dribbble.com/shots/5726952-Bingo-App-UI-Kit

Slide 20

Slide 20 text

Credit to Taras Migulko https:/ /dribbble.com/shots/6215241-Sport-activity-dashboard-application

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

https://shapeshifter.design Shapeshifter

Slide 23

Slide 23 text

Code has a big effect on UX

Slide 24

Slide 24 text

val uiStates = observeData() .map { getUiState(it) } uiStates.subscribe { state -> // Render state. }

Slide 25

Slide 25 text

val uiStates = observeData() .map { getUiState(it) } .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) uiStates.subscribe { state -> // Render state. }

Slide 26

Slide 26 text

val uiStates = observeData() .map { getUiState(it) } .replay(1) .refCount() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) uiStates.subscribe { state -> // Render state. }

Slide 27

Slide 27 text

val uiStates = observeData() .map { getUiState(it) } .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .replay(1) .refCount() uiStates.subscribe { state -> // Render state. }

Slide 28

Slide 28 text

Username Password LOGIN My Wonderful App

Slide 29

Slide 29 text

Username Password LOGIN My Wonderful App

Slide 30

Slide 30 text

Username Password LOGIN My Wonderful App

Slide 31

Slide 31 text

Username Password LOGIN My Wonderful App

Slide 32

Slide 32 text

Username Password LOGIN My Wonderful App Picasso.get() .load(R.drawable.blurred_bg) .into(loginBg)

Slide 33

Slide 33 text

It’s important to understand what you’re making the computer do

Slide 34

Slide 34 text

Credit to Joseph Gentle https:/ /josephg.com/blog/electron-is-flash-for-the-desktop/

Slide 35

Slide 35 text

Buck the trend. Make quality software. Communicate your domain specific knowledge. Become a disgruntled user. Work closely with designers. Up your game.

Slide 36

Slide 36 text

Developers The last line of UX defence chris_h_codes chris-horner chrishorner.codes