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
66
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
100
2000 katas later @CAS15
nhpatt
0
93
Métricas: lo bueno, lo feo y lo malo
nhpatt
0
200
Working Effectively with Legacy Code
nhpatt
0
360
Performance myths in android
nhpatt
2
250
How *not* to design an SDK
nhpatt
0
42
Angular2 @SC Toledo
nhpatt
0
52
Cambiar una empresa con juegos ágiles
nhpatt
0
240
RxJava in practice
nhpatt
1
310
Other Decks in Programming
See All in Programming
情報漏洩させないための設計
kubotak
4
870
rails stats で紐解く ANDPAD のイマを支える技術たち
andpad
1
300
Асинхронность неизбежна: как мы проектировали сервис уведомлений
lamodatech
0
1k
週次リリースを実現するための グローバルアプリ開発
tera_ny
1
110
KubeCon + CloudNativeCon NA 2024 Overviewat Kubernetes Meetup Tokyo #68 / amsy810_k8sjp68
masayaaoyama
0
260
暇に任せてProxmoxコンソール 作ってみました
karugamo
2
740
ドメインイベント増えすぎ問題
h0r15h0
2
440
Mermaid x AST x 生成AI = コードとドキュメントの完全同期への道
shibuyamizuho
1
290
MCP with Cloudflare Workers
yusukebe
2
230
fs2-io を試してたらバグを見つけて直した話
chencmd
0
250
Semantic Kernelのネイティブプラグインで知識拡張をしてみる
tomokusaba
0
180
技術的負債と向き合うカイゼン活動を1年続けて分かった "持続可能" なプロダクト開発
yuichiro_serita
0
150
Featured
See All Featured
Visualization
eitanlees
146
15k
Learning to Love Humans: Emotional Interface Design
aarron
274
40k
Building Your Own Lightsaber
phodgson
103
6.1k
Navigating Team Friction
lara
183
15k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.1k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
460
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
910
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