Professional Documents
Culture Documents
androiddesigninaction.com
+NickButcher
HOLO
RESPONSIVE DESIGN
Content First
Content First
Borderless buttons
Button bar
Typography
Roboto Thin & Thin Oblique Roboto Light & Light Oblique
Hello, Roboto
Roboto Regular & Regular Oblique Roboto Medium & Medium Oblique Roboto Bold & Bold Oblique Roboto Black & Black Oblique Roboto Condensed & Condensed Oblique Roboto Bold Condensed Bold Condensed Oblique
USE TYPOGRAPHY
to provide STRUCTURE and emphasis
Colour
Holo != #33b5e5
Colour
Use your brand colour for accent Use high-contrast colour for emphasis
Colour
Touch feedback
Holo Light: 20% #999 (#33999999) Holo Dark: 25% #ccc (#40cccccc)
Jolt of high contrast Sprinkles of encouragement
Branding
Information Design Interaction Design Visual Design
You
Holo/Android
android-holo-colors.com
TOOLS
ANDROID HOLO COLORS Generate Holo assets for UI controls, using your brands accent color
actionbarstylegenerator.com
TOOLS
ACTION BAR STYLE GENERATOR Generate Holo assets for the action bar and tabs, using your brands accent color
Implementing Holo
Themes
Inherit from Holo styles
minSdkVersion 11+ res/values/styles.xml <style name="MyTheme" parent="android:Theme.Holo.Light"/> minSdkVersion 711 res/values/styles.xml <style name="MyTheme" parent="Theme.AppCompat.Light"/> AndroidManifest.xml <application ... theme="@style/MyTheme">
(eqivilant to ?android:attr/baz)
18sp
Stateful background
Adds dividers
Stateful background
Activity indicator
Responsive Design
Why responsive?
Why responsive?
Combining content
Combining content
res/ ... layout/ activity_home.xml activity_details.xml fragment_list.xml fragment_details.xml layout-sw720dp/ activity_home.xml ...
Combining content
res/ ... layout/ activity_home.xml activity_details.xml fragment_list.xml fragment_details.xml layout-sw720dp/ activity_home.xml ...
Combining content
res/ ... layout/ activity_home.xml activity_details.xml fragment_list.xml fragment_details.xml layout-sw720dp/ activity_home.xml ...
Combining content
res/ ... layout/ activity_home.xml activity_details.xml fragment_list.xml fragment_details.xml layout-sw720dp/ activity_home.xml ...
Combining content
SlidingPaneLayout
Combining content
SlidingPaneLayout
<android.support.v4.widget.SlidingPaneLayout ... android:layout_width="match_parent" android:layout_height="match_parent"> <!-- First child is the left pane --> <fragment android:name="com.example.ListFragment" android:layout_width="280dp" android:layout_height="match_parent" android:layout_gravity="start" /> <!-- Second child is the right (content) pane --> <fragment android:name="com.example.DetailFragment" android:layout_width="600dp" android:layout_height="match_parent" android:layout_weight="1" /> </android.support.v4.widget.SlidingPaneLayout>
If combined pane widths exceed screen width then right pane overlaps
Staggered grid
https://github.com/etsy/ AndroidStaggeredGrid
Extract dimensions
res/values/dimens.xml <dimen <dimen <dimen <dimen <dimen name="default_spacing_major">16dp</dimen> name="default_spacing_minor">8dp</dimen> name="default_spacing_micro">4dp</dimen> name="body_text_size">18sp</dimen> name="body_line_spacing" format="float" type="dimen">1.0</dimen>
Maximum widths
Avoid overly wide line lengths for comfortable reading Optimal measure is 4575 chars per line
Maximum widths
<com.example.MaxWidthLinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:orientation="vertical"> ! <TextView app:layout_maxWidth="600dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/lorem_ipsum" ... /> </com.example.MaxWidthLinearLayout>
MaxWidthLinearLayout
http://goo.gl/zNY0jy
Responsive images
<ImageView android:scaleType="centerCrop" android:src="@drawable/bacon" android:layout_width="match_parent" android:layout_height="match_parent" />
1dp separator
http://youtu.be/zhszwkcay2A
Consider
HOLO
RESPONSIVE DESIGN
Thanks!
Nick Butcher +Android Developers