Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Android M
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Javier Gamarra
June 27, 2015
Programming
82
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Android M
Charla sobre novedades de Android M impartida en Cylicon Valley
Javier Gamarra
June 27, 2015
More Decks by Javier Gamarra
See All by Javier Gamarra
2000 katas later @cylicon
nhpatt
0
110
2000 katas later @CAS15
nhpatt
0
110
Métricas: lo bueno, lo feo y lo malo
nhpatt
0
260
Working Effectively with Legacy Code
nhpatt
0
450
Performance myths in android
nhpatt
2
320
How *not* to design an SDK
nhpatt
0
59
Angular2 @SC Toledo
nhpatt
0
65
Cambiar una empresa con juegos ágiles
nhpatt
0
260
RxJava in practice
nhpatt
1
340
Other Decks in Programming
See All in Programming
Simple Storage Service(S3) is not simple
iwatsukayura
0
120
setup-vp GitLab対応の裏側
naokihaba
0
140
Heart of Swift Concurrency
koher
0
1.1k
TiDB Cloudのカスタムコントローラーによるオートスケール対応
takaidohigasi
0
140
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
570
Embedded Swiftで作る自作USBデバイス によるiOSデバイスの自動テスト / iOSDC Japan 2026 glassfiber
glassfiber
0
250
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
480
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
JRuby: Past, Present, and Future
headius
0
220
Java 27新機能 / Java 27 new features
kishida
2
190
AWSに止められる覚悟してますか?
morizo_1984
2
490
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
330
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
330
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
570
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
380
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
440
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
710
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.9k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1k
How to Ace a Technical Interview
jacobian
280
24k
Amusing Abliteration
ianozsvald
1
320
Designing for humans not robots
tammielis
254
26k
Transcript
Android M @nhpatt / Javier Gamarra
@nhpatt / Javier Gamarra @liferay @agilecyl
Android?
Best improvement in M?
Best improvement in M • Design support library? • Data
binding?
What is the biggest problem developing with Android?
Android Problems • Fragmentation anyone? • Let`s talk about it…
• How many support libraries are there?
Design Support Library
Design Support Library Yet Another Support Library: compile 'com.android.support:design:22.2.0' Embeds
the normal support library
Design Support Library • Snackbar -> fixing toasts and “manual”
snackbars Snackbar.make(view, "Your message", LENGTH_SHORT) .setAction(getString(R.string.text_undo), this) .show();
Design Support Library • FAB -> replaces “manual” libraries <android.support.design.widget.FloatingActionButton
android:id="@+id/fab_normal" app:fabSize="normal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_plus" />
Design Support Library Customizable (size, tint, border, ripple…)
Design Support Library • TextInputLayout -> awesome fields with floating
hints and errors
Design Support Library <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <EditText android:id="@+id/edit_text_email" android:layout_width="match_parent" android:layout_height="wrap_content"
android:inputType="textEmailAddress" android:hint="@string/hint_email" /> </android.support.design.widget.TextInputLayout>
Design Support Library And errors: setErrorEnabled(true); setError(getString(R.string.text_error_message));
Design Support Library • NavigationView replaces “manual” sidebar
Design Support Library <android.support.design.widget.NavigationView android:id="@+id/navigation_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" app:headerLayout="@layout/navigation_header" app:menu="@menu/drawer"
/>
Design Support Library We can group menu entries, change background,
capture click events...
Design Support Library • TabLayout -> tabs made easy <android.support.design.widget.TabLayout
android:id="@+id/sliding_tabs" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabMode="fixed" app:tabGravity="fill" />
Design Support Library • TabMode • Listeners • Integration with
ViewPager • ...
Design Support Library • CoordinatorLayout & AppBarLayout -> automatic transitions
and integration with toolbar (or FAB…) • Scroll actions like enterAlways • Parallax effect
Design Support Library • Vector drawables (this is cool) ->
better shapes • Only on M • But easy to animate!
Design Support Library • And new support library version… ◦
colorPrimary <3 • And new play-services… • And support annotations ◦ (Null, resources, threading, permissions…)
Design support library Looks great but… bugs!
App Permissions
App permissions Now you have to be aware of the
permissions (and the chain of permissions!) • You define the permissions in the manifest (as always) • But there are NORMAL permissions and SPECIAL.
App permissions Permission is requested on first use for SPECIAL
permissions. • You have to check explicitly • You have to deal with revoking a permission ◦ Or the user deciding against granting it
App permissions Only for M targeted builds! <uses-permission-sdk-m> Build.VERSION Context.checkSelfPermission(permission_name)
Activity.requestPermissions(String[], int) public void onRequestPermissionsResult(...)
App permissions Reference
App Links
App links Allow registering your app as default handler (instead
of dialog) of links.
App links • Host a JSON, including your fingerprint •
And request the verification from your manifest Reference
Data binding
Data binding • Declarative layouts • Less code Yeah… but
why? Simple Example
Data binding <layout> <data> <variable name="movie" type="com.nhpatt.androidm.model.Movie" /> </data> <LinearLayout
...> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{movie.title}" /> </LinearLayout> </layout>
Data binding ActivityBindingBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_binding); binding.setMovie(new Movie("Mad Max"));
Data binding Conditionals: android:visibility="@{movie.isNew ? View.VISIBLE : View.GONE}" Includes: <include
layout="@layout/name" bind:movie="@{movie}"/>
Data binding • Expression language! Like JSTL, JSF: concatenation, math
expressions, comparisons, casts, method calls… Except this, new and super.
Data binding New operators! ?? like || in JS android:text="@{movie.displayName
?? movie.title}"
Data binding NPE tolerant: @{movie.name} -> returns null if movie
is null
Data binding “Live” data binding with Observable Objects: • inherit
from BaseObservable • @Bindable in getter • notifyPropertyChanged in setter Or being a instance of ObservableField or ObservableArrayMap...
Data binding Lots of more stuff: • Converters • Custom
getters/setters • Dynamic binding • ... Reference
Direct share
Direct share Easy & powerful way of sharing :) But
only in M… (right now)
Backup & restore
Backup & restore • Google Drive • Every 24 hours
• Opt out • Don’t do it with the registrationId
Backup & restore Reference with the manifest and specify what
to save: android:fullBackupContent="@xml/mybackupscheme" <?xml version="1.0" encoding="utf-8"?> <full-backup-content> <exclude domain="database" path="device_info.db"/> </full-backup-content>
Backup & restore Testeable!: adb shell bmgr run Reference
And more things...
And more things... • Cloud test lab • Doze (testeable!)
• Now on tap • API device unlock • Developer page • Lots.
Not Android L but a lot of cool stuff
References • Good android guide • Exploring design support library
! • And another great one !
Android M @nhpatt / Javier Gamarra