Slide 1

Slide 1 text

. . . . . . . . . . . . . Resources on Android Mike Castleman Meetup ADI DevFest, 2013-02-04 Mike Castleman (Meetup) Android Resources DevFest 2013 1 / 16

Slide 2

Slide 2 text

. . . . . . Fragmentation “Developing for Android is hard, because there are lots of different devices, and you have to test your app on every single one of them.” — People who never develop for Android Mike Castleman (Meetup) Android Resources DevFest 2013 2 / 16

Slide 3

Slide 3 text

. . . . . . Resources Provide different assets for different devices Let the platform choose the right one Set things up declaritively: don’t write any extra code! Mike Castleman (Meetup) Android Resources DevFest 2013 3 / 16

Slide 4

Slide 4 text

. . . . . . Resource Types drawable: images etc. layout values: strings, styles, themes, integers, arrays anim, color, menu xml, raw Mike Castleman (Meetup) Android Resources DevFest 2013 4 / 16

Slide 5

Slide 5 text

. . . . . . Qualifiers OS Version: v9 etc. Screen size: small, medium (phones); large, xlarge (tablets) Language (and country): en, es, en-rCA Portrait/landscape: port, land Screen density: ldpi, mdpi, hdpi, xhdpi Many others, see SDK docs if interested. Mike Castleman (Meetup) Android Resources DevFest 2013 5 / 16

Slide 6

Slide 6 text

. . . . . . Directory structure Mike Castleman (Meetup) Android Resources DevFest 2013 6 / 16

Slide 7

Slide 7 text

. . . . . . Use cases res/layout res/layout-land Mike Castleman (Meetup) Android Resources DevFest 2013 7 / 16

Slide 8

Slide 8 text

. . . . . . Use cases res/values/styles.xml res/values-v11/styles.xml Mike Castleman (Meetup) Android Resources DevFest 2013 8 / 16

Slide 9

Slide 9 text

. . . . . . Use cases res/values/strings.xml Nice phone! Nice tablet! @string/nice_phone res/values-large/strings.xml @string/nice_tablet res/values-it/strings.xml Bel telefono! Bel tablet! res/layout/activity.xml Mike Castleman (Meetup) Android Resources DevFest 2013 9 / 16

Slide 10

Slide 10 text

. . . . . . Nononono public class TurnBlueOnTouch implements View.OnTouchListener { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getActionMasked() == MotionEvent.ACTION_DOWN) v.setColor(Color.argb(255, 0, 0, 127)); else if (event.getActionMasked() == MotionEvent.ACTION_UP) v.setColor(Color.BLACK); return false; } } Mike Castleman (Meetup) Android Resources DevFest 2013 10 / 16

Slide 11

Slide 11 text

. . . . . . Yesyesyesyes Mike Castleman (Meetup) Android Resources DevFest 2013 11 / 16

Slide 12

Slide 12 text

. . . . . . Images: Four “Abstract Densities” ldpi: 75% of base mdpi: base image size hdpi: 150% of base xhdpi: 200% of base ldpi mdpi hdpi xhdpi 48×48 64×64 96×96 128×128 Mike Castleman (Meetup) Android Resources DevFest 2013 12 / 16

Slide 13

Slide 13 text

. . . . . . Images: Measurement Units px — physical device pixels dp — “density-independent pixel” On mdpi, 1 px = 1 dp. Not so on other densities! Devices vary both in their density and in their size in dp. Mike Castleman (Meetup) Android Resources DevFest 2013 13 / 16

Slide 14

Slide 14 text

. . . . . . But! Android will automatically scale if you don’t have appropriate files. ldpi maybe irrelevant. Maybe just xhdpi if you’re feeling brave. Mike Castleman (Meetup) Android Resources DevFest 2013 14 / 16

Slide 15

Slide 15 text

. . . . . . 9-Patch Images Mike Castleman (Meetup) Android Resources DevFest 2013 15 / 16

Slide 16

Slide 16 text

. . . . . . Thank You Questions? Also, we’re hiring, interns and full-time positions: [email protected] Mike Castleman (Meetup) Android Resources DevFest 2013 16 / 16