Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Android M
Search
Javier Gamarra
June 27, 2015
Programming
0
69
Android M
Charla sobre novedades de Android M impartida en Cylicon Valley
Javier Gamarra
June 27, 2015
Tweet
Share
More Decks by Javier Gamarra
See All by Javier Gamarra
2000 katas later @cylicon
nhpatt
0
110
2000 katas later @CAS15
nhpatt
0
95
Métricas: lo bueno, lo feo y lo malo
nhpatt
0
230
Working Effectively with Legacy Code
nhpatt
0
390
Performance myths in android
nhpatt
2
260
How *not* to design an SDK
nhpatt
0
48
Angular2 @SC Toledo
nhpatt
0
56
Cambiar una empresa con juegos ágiles
nhpatt
0
250
RxJava in practice
nhpatt
1
330
Other Decks in Programming
See All in Programming
モバイルアプリからWebへの横展開を加速した話_Claude_Code_実践術.pdf
kazuyasakamoto
0
290
Kiroで始めるAI-DLC
kaonash
2
260
🔨 小さなビルドシステムを作る
momeemt
2
610
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
250
AIレビュアーをスケールさせるには / Scaling AI Reviewers
technuma
2
230
サイトを作ったらNFCタグキーホルダーを爆速で作れ!
yuukis
0
710
Google I/O recap web編 大分Web祭り2025
kponda
0
2.9k
UbieのAIパートナーを支えるコンテキストエンジニアリング実践
syucream
2
770
Namespace and Its Future
tagomoris
6
650
The State of Fluid (2025)
s2b
0
200
LLMOpsのパフォーマンスを支える技術と現場で実践した改善
po3rin
8
990
20250808_AIAgent勉強会_ClaudeCodeデータ分析の実運用〜競馬を題材に回収率100%の先を目指すメソッドとは〜
kkakeru
0
210
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
268
13k
Making Projects Easy
brettharned
117
6.3k
Statistics for Hackers
jakevdp
799
220k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
The Cult of Friendly URLs
andyhume
79
6.6k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
Writing Fast Ruby
sferik
628
62k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Facilitating Awesome Meetings
lara
55
6.5k
Testing 201, or: Great Expectations
jmmastey
45
7.6k
How to Ace a Technical Interview
jacobian
279
23k
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