SlideShare uma empresa Scribd logo
1 de 64
Baixar para ler offline
Aumentando a produtividade 

com Android Libs
1
+Nelson Glauber
@nglauber
www.nglauber.com.br
2
@nglauber
+NelsonGlauber
www.nglauber.com.br
O que vamos falar aqui…
• Apresentar as principais bibliotecas utilizadas no
desenvolvimento de aplicativos Android.
• Experiência no meu projeto atual que usa
(praticamente) todas!!! :O
• Disseminar esse conhecimento para acelerar o
desenvolvimento de aplicações Android.
3
4
5
Esqueça…
Já passou…
#nostalgia
Support Libraries: appcompat
• Garantia de compatibilidade entre versões do Android.
• Possui os componentes das support libraries v4 e v7
• Diversos componentes importantes: AppCompatActivity, Fragment, Toolbar,
NotificationCompat, ViewPager, DrawerLayout, SlidingPanelLayout, Loader,
LocalBroadcastManager, ShareActionProvider, Permissions…
6
dependencies {
...
compile ‘com.android.support:appcompat-v7:23.+'
}
Support Libraries++
Os componentes CardView, GridLayout, Pallete e RecyclerView
também estão disponíveis em bibliotecas de suporte!
7
dependencies {
...
compile ‘com.android.support:cardview-v7:23.+'
compile ‘com.android.support:gridlayout-v7:23.+'
compile ‘com.android.support:palette-v7:23.+’
compile ‘com.android.support:recyclerview-v7:23.+'
}
Butter Knife
http://jakewharton.github.io/butterknife/
8
dependencies {
...
compile ‘com.jakewharton:butterknife:7.0.1'
}
9
@Bind(R.id.edtFaca)
EditText edtFaca;
@Bind(R.id.txtManteiga)
TextView txtManteiga;
// Na Activity
public void onCreate(Bundle state){
...
ButterKnife.bind(this);
}
// No Fragment
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_main, container, false);
ButterKnife.bind(this, view);
...
}
10
@OnClick(R.id.submit)
public void submit(View view) {
}
@OnItemSelected(R.id.list_view)
void onItemSelected(int position) {
}
TextView txtNome = ButterKnife.findById(view, R.id.txtNome);
// Para fragments
public void onDestroyView(){
ButterKnife.unbind(this);
}
Data Binding
11
• Mapeia propriedades de um objeto no arquivo de layout.
• Lançada no Google I/O 2015.
• Funciona para Activities, Fragments e Adapters.
• Compatível com versões anteriores (a partir do Android 2.1 API Level 7).
• Versão BETA!
• Mais detalhes: https://d.android.com/tools/data-binding/guide.html
12
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.3.0-beta4'
classpath "com.android.databinding:dataBinder:1.0-rc1"
}
}
allprojects {
repositories {
jcenter()
}
}
apply plugin: 'com.android.databinding'
13
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="livro"
type="br.com.nglauber.intelsoftwaredaydemo.model.Livro" />
</data>
<RelativeLayout ...>
<TextView android:text="@{livro.titulo}" ... />
<TextView android:text="@{livro.autor}" ... />
<TextView android:text="@{String.valueOf(livro.ano)}" .../>
<TextView android:text="@{String.valueOf(livro.paginas)}" .../>
</RelativeLayout>
</layout>
Acesso a web
http://square.github.io/okhttp/
14
https://github.com/google/gson
Acesso a web
15
{ "novatec": [
{ "categoria": "Aplicativos",
"livros": [
{ "titulo": “Dominando o Android",
"autor": “Nelson Glauber",
"ano": 2015,
"paginas": 792,
"capa": ""http://novatec.com.br/DominandoAndroid.gif"
}
]
},
...
16
dependencies {
...
compile 'com.squareup.okhttp:okhttp:2.5.0'
compile 'com.google.code.gson:gson:2.3.1'
}
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(“http://seuservidor.com/livros_editora.json")
.build();
Response response = client.newCall(request).execute();
String json = response.body().string();
Gson gson = new Gson();
editora = gson.fromJson(json, Editora.class);
17
MediaType JSON = MediaType.parse("application/json; charset=utf-8");
OkHttpClient httpClient = new OkHttpClient();
Gson gson = new Gson();
String jsonReq = gson.toJson(livro);
RequestBody body = RequestBody.create(JSON, jsonReq);
Request postRequest = new Request.Builder()
.url("http://seuservidor.com/post_livro")
.post(body)
.build();
Response postResponse = httpClient.newCall(postRequest).execute();
String jsonResposta = postResponse.body().string();
Acesso a web services REST++
http://square.github.io/retrofit/
18
dependencies {
...
compile ‘com.squareup.retrofit:retrofit:2.0.0'
}
import retrofit.Callback;
import retrofit.http.*;
public interface ProdutoService {
String PATH_PRODUTOS = "/produtos";
@GET(PATH_PRODUTOS)
void listarProdutos(Callback<List<Produto>> callback);
@POST(PATH_PRODUTOS)
void adicionarProduto(@Body Produto produto,
Callback<Produto> callback);
@PUT(PATH_PRODUTOS+"/{id}")
void atualizarProduto(@Path("id") int id,
@Body Produto produto, Callback<Produto> callback);
}
19
20
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint(“http://meuservico.com”)
.build();
ProdutoService produtoService =
restAdapter.create(ProdutoService.class);
produtoService.listarProdutos(
new Callback<List<Produto>>() {
@Override
public void success(List<Produto> produtos,
Response response) {
// É só ler a lista de produtos normalmente...
}
@Override
public void failure(RetrofitError error) {
// Erro ao obter lista de produtos
}
});
21
Produto produto = new Produto();
produto.setDescricao("Computador");
produto.setPreco(12999.9);
produtoService.adicionarProduto(produto,
new Callback<Produto>() {
@Override
public void success(Produto produto, Response response) {
// Produto inserido com sucesso
}
@Override
public void failure(RetrofitError error) {
// Falha ao inserir produto
}
});
Carregamento de imagens
http://square.github.io/picasso/
22
dependencies {
...
compile 'com.squareup.picasso:picasso:2.5.2'
}
23
Picasso.with(context)
.load("http://servidor.com/foto.jpg")
.resize(50, 50)
.centerCrop()
.placeholder(R.drawable.user_placeholder)
.error(R.drawable.user_placeholder_error)
.into(imageView);
Carregamento de imagens++
https://github.com/nostra13/Android-Universal-Image-Loader
24
Design Support Library
• Lançada no Google I/O 2015.
• Traz diversas recomendações do Material Design
prontas para usar.
• FAB, Tabs, Scroll, Navigation View, Snack Bar…
25
dependencies {
...
compile ‘com.android.support:design:23.+'
}
26
27
<android.support.design.widget.CoordinatorLayout ...>
<android.support.v4.view.ViewPager ...
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<android.support.design.widget.AppBarLayout ...>
<android.support.v7.widget.Toolbar ...
app:layout_scrollFlags="scroll|enterAlways" />
<android.support.design.widget.TabLayout .../>
</android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>
28
Material icons
• Aprox. 800 ícones no padrão Material Design
• Gratuitos
• Para todas as densidades de tela
• https://www.google.com/design/icons/
29
Persistência de dados
https://github.com/pardom/ActiveAndroid
30
31
apply plugin: 'com.android.application'
android {
...
repositories {
mavenCentral()
maven {
url "https://oss.sonatype.org/content/repositories/snapshots/" }
}
dependencies {
...
compile 'com.michaelpardo:activeandroid:3.1.0-SNAPSHOT'
}
}
32
<manifest ...>
<application ...
android:name=".App">
...
<meta-data android:name="AA_DB_NAME"
android:value="livros.db"/>

<meta-data android:name="AA_DB_VERSION"
android:value="1"/>
</application>
</manifest> import android.app.Application;
import com.activeandroid.ActiveAndroid;
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
ActiveAndroid.initialize(this);
}
}
33
import com.activeandroid.Model;
import com.activeandroid.annotation.Column;
import com.activeandroid.annotation.Table;
@Table(name = "Livros")
public class Livro extends Model {
@Column(name = "titulo", unique = true,
onUniqueConflict = Column.ConflictAction.REPLACE)
public String titulo;
@Column(name = "autor")
public String autor;
@Column(name = "ano")
public int ano;
@Column(name = "paginas")
public int paginas;
@Column(name = "capa")
public String capa;
}
34
Livro livroFavorito = new Livro(
"Dominando o Android",
"Nelson Glauber",
2015,
792,
"http://goo.gl/capa.png"
);
livroFavorito.save();
List<Livro> mLivros = new Select()
.from(Livro.class)
.where("titulo LIKE ?", "Dom%")
.execute();
Livro livro = new Select()
.from(Livro.class)
.where("ID = ?", 12)
.executeSingle();
Persistência de dados++
35
https://github.com/Raizlabs/DBFlow
http://ormlite.com/sqlite_java_android_orm.shtmlhttps://github.com/pardom/ollie
Troca de Mensagens
http://square.github.io/otto/
36
37
dependencies {
...
compile 'com.squareup:otto:1.3.8'
}
import android.app.Application;
import com.squareup.otto.Bus;
public class App extends Application {
Bus mBus;
@Override
public void onCreate() {
super.onCreate();
...
mBus = new Bus();
}
public Bus getBus(){
return mBus;
}
}
38
Bus mBus = ((App)getApplication()).getBus();


mBus.register(this);
mBus.post(new UmaClasseQualquer("Mensagem"));
mBus.unregister(this);
@Subscribe
public void chegouEvento(UmaClasseQualquer event) {
String texto = event.getMensagem();
Toast.makeText(this, texto, Toast.LENGTH_LONG).show();
}
Troca de Mensagens++
https://github.com/greenrobot/EventBus
39
Injeção de dependência
http://square.github.io/dagger/
40
dependencies {
...
compile 'com.squareup.dagger:dagger:1.2.2'
provided 'com.squareup.dagger:dagger-compiler:1.2.2'
}
Testes de UI
https://developer.android.com/tools/testing-support-library/index.html
41
UIAutomator
42
HIERARCHY
withParent(Matcher)
withChild(Matcher)
hasDescendant(Matcher)
isDescendantOfA(Matcher)
hasSibling(Matcher)
isRoot()
UI PROPERTIES
isDisplayed()
isCompletelyDisplayed()
isEnabled()
hasFocus()
isClickable()
isChecked()
isNotChecked()
withEffectiveVisibility(…)
isSelected()
ROOT MATCHERS
isFocusable()
isTouchable()
isDialog()
withDecorView(…)
isPlatformPopup()
COMMON HAMCREST
MATCHERS
allOf(Matchers)
anyOf(Matchers)
is(...)
not(...)
endsWith(String)
startsWith(String)
SEE ALSO
Preference matchers
Cursor matchers
USER PROPERTIES
withId(…)
withText(…)
withTagKey(…)
withTagValue(…)
hasContentDescription(…)
withContentDescription(…)
withHint(…)
withSpinnerText(…)
hasLinks()
hasEllipsizedText()
hasMultilineText()
INPUT
supportsInputMethods(…)
hasImeAction(…)
CLASS
isAssignableFrom(…)
withClassName(…)
Matchers
CLICK/PRESS
click()
doubleClick()
longClick()
pressBack()
pressImeActionButton()
pressKey([int/EspressoKey])
pressMenuKey()
closeSoftKeyboard()
openLink(…)
GESTURES
scrollTo()
swipeLeft()
swipeRight()
swipeUp()
swipeDown()
TEXT
clearText()
typeText(String)
typeTextIntoFocusedView(String)
replaceText(String)
POSITION ASSERTIONS
isLeftOf(Matcher)
isRightOf(Matcher)
isLeftAlignedWith(Matcher)
isRightAlignedWith(Matcher)
isAbove(Matcher)
isBelow(Matcher)
isBottomAlignedWith(Matcher)
isTopAlignedWith(Matcher)
LAYOUT ASSERTIONS
noEllipsizedText(Matcher)
noMultilineButtons()
noOverlaps([Matcher])
View Actions
matches(Matcher)
doesNotExist()
selectedDescendantsMatch(…)
View Assertions
onView(Matcher)
.perform(ViewAction)
.check(ViewAssertion)
CHEAT SHEET
2.0
43
@Test
public void testAdicionarFavorito() {
String bookTitle = "NoSQL Essencial";
onView(withId(R.id.recyclerViewWeb))
.perform(RecyclerViewActions.actionOnItem(
hasDescendant(withText(bookTitle)), click()));
onView(withId(R.id.txtTitulo)).check(matches(withText(bookTitle)));
onView(withId(R.id.action_favorito)).perform(click());
pressBack();
onView(withId(R.id.pager)).perform(swipeLeft());
onView(withId(R.id.recyclerViewFavoritos))
.check(matches(hasDescendant(withText(bookTitle))));
}
Testes de UI++
https://code.google.com/p/robotium/
44
http://appium.io/
Execução de Testes
45
http://square.github.io/spoon/
46
47
Diversos (Parcelable)
https://github.com/johncarl81/parceler
https://github.com/frankiesardo/auto-parcel
48
dependencies {
...
compile ‘org.parceler:parceler-api:1.0.3’
provided ‘org.parceler:parceler:1.0.3’
}
import org.parceler.Parcel;
@Parcel
public class Pessoa {
String nome;
int idade;
public Pessoa(){ // obrigatório }
public Pessoa(int i, String n) {
this.idade = i;
this.nome = n;
}
public String getNome() { return nome; }
public int getIdade() { return idade; }
}
49
Parcelable wrapped = Parcels.wrap(new Pessoa(31, "Glauber"));
Pessoa pessoa = Parcels.unwrap(wrapped);
50
Log
https://github.com/JakeWharton/timber
51
https://github.com/JakeWharton/hugo
dependencies {
...
compile 'com.jakewharton.timber:timber:2.5.1'
}
// No onCreate da App...
if (BuildConfig.DEBUG) {
Timber.plant(new Timber.DebugTree());
} else {
Timber.plant(new CrashReportingTree());
}
Timber.d("Usando o Timber!");
52
class CrashReportingTree extends Timber.HollowTree {
@Override
public void i(String message, Object... args) {
}
@Override
public void i(Throwable t, String message, Object... args) {
i(message, args);
}
@Override
public void e(String message, Object... args) {
i("ERROR: " + message, args);
// Enviar log para o servidor
}
@Override
public void e(Throwable t, String message, Object... args) {
e(message, args);
// Enviar log para o servidor
}
}
53
Google Play Services ROCKS!!!
54
• NearBy API (beacons)
• Mobile Vision API (Face e cód. barras)
• Google Cloud Messing
• Mapas e localização
• Android Wear
• Google Fit
• E muito mais!
Analytics
http://try.crashlytics.com/sdk-android/
55
https://developers.google.com/
analytics/devguides/collection/
android/v4/
Diversos
• Calligraphy - Para fontes customizadas

https://github.com/chrisjenx/Calligraphy
• Joda-Time - Para trabalhar com data e hora

https://github.com/dlew/joda-time-android
• AndroidViewAnimations - Animações pré-definidas

https://github.com/daimajia/AndroidViewAnimations
• seismic - Para shake detection

https://github.com/square/seismic
• LINQ - Manipulação de coleções

https://github.com/zbra-solutions/android-linq
56
while(true) diversos++;
57
https://android-arsenal.com/
Não esqueça da licença!!!
58
Vou utilizar todas no meu projeto!!!
59
É importante conhecer (e bem) a API padrão para saber
onde você ganhará produtividade usando uma lib
60
61
https://www.novatec.com.br
E lembre-se! A API padrão nunca vai te abandonar!
62
Dúvidas? Obrigado!!
63
64
@nglauber
+NelsonGlauber
www.nglauber.com.br

Mais conteúdo relacionado

Mais procurados

AngularJS Abraçando o MVC Client-Side
AngularJS Abraçando o MVC Client-SideAngularJS Abraçando o MVC Client-Side
AngularJS Abraçando o MVC Client-SideSergio Azevedo
 
Introdução ao AngularJS
Introdução ao AngularJSIntrodução ao AngularJS
Introdução ao AngularJSRodrigo Branas
 
A evolução do AngularJS
A evolução do AngularJSA evolução do AngularJS
A evolução do AngularJSRodrigo Branas
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Julian Cesar
 
Desenvolvendo aplicacoes mobile_com_html_css_
Desenvolvendo aplicacoes mobile_com_html_css_Desenvolvendo aplicacoes mobile_com_html_css_
Desenvolvendo aplicacoes mobile_com_html_css_Rodrigo Urubatan
 
Desenvolvimento Android, por onde começar?
Desenvolvimento Android, por onde começar?Desenvolvimento Android, por onde começar?
Desenvolvimento Android, por onde começar?Rudson Lima
 
SESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao AndroidSESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao AndroidRafael Sakurai
 
Criando uma arquitetura de front-end do zero
Criando uma arquitetura de front-end do zeroCriando uma arquitetura de front-end do zero
Criando uma arquitetura de front-end do zeroEduardo Shiota Yasuda
 
Apresentação AngularJS - Angular UI
Apresentação AngularJS - Angular UIApresentação AngularJS - Angular UI
Apresentação AngularJS - Angular UICecília Rosa
 
AngularJS com NODE.JS e Socket.IO
AngularJS com NODE.JS e Socket.IOAngularJS com NODE.JS e Socket.IO
AngularJS com NODE.JS e Socket.IODouglas Lira
 
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDA
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDAANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDA
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDAWilson Mendes
 
Como Perder Peso (no browser)
Como Perder Peso (no browser)Como Perder Peso (no browser)
Como Perder Peso (no browser)Zeno Rocha
 
Desenvolvimento de Aplicações Web AngularJS no Contexto da IoT
Desenvolvimento de Aplicações Web AngularJS no Contexto da IoTDesenvolvimento de Aplicações Web AngularJS no Contexto da IoT
Desenvolvimento de Aplicações Web AngularJS no Contexto da IoTRodrigo Fortes
 
O futuro dos WebApps com AngularJS 2.0
O futuro dos WebApps com AngularJS 2.0O futuro dos WebApps com AngularJS 2.0
O futuro dos WebApps com AngularJS 2.0Wilson Mendes
 

Mais procurados (20)

AngularJS Abraçando o MVC Client-Side
AngularJS Abraçando o MVC Client-SideAngularJS Abraçando o MVC Client-Side
AngularJS Abraçando o MVC Client-Side
 
Introdução ao AngularJS
Introdução ao AngularJSIntrodução ao AngularJS
Introdução ao AngularJS
 
A evolução do AngularJS
A evolução do AngularJSA evolução do AngularJS
A evolução do AngularJS
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)
 
Android Constraint Layout
Android Constraint LayoutAndroid Constraint Layout
Android Constraint Layout
 
Desenvolvendo aplicacoes mobile_com_html_css_
Desenvolvendo aplicacoes mobile_com_html_css_Desenvolvendo aplicacoes mobile_com_html_css_
Desenvolvendo aplicacoes mobile_com_html_css_
 
Android Wear
Android WearAndroid Wear
Android Wear
 
Curso AngularJS - Parte 1
Curso AngularJS - Parte 1Curso AngularJS - Parte 1
Curso AngularJS - Parte 1
 
Desenvolvimento Android, por onde começar?
Desenvolvimento Android, por onde começar?Desenvolvimento Android, por onde começar?
Desenvolvimento Android, por onde começar?
 
SESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao AndroidSESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao Android
 
Criando uma arquitetura de front-end do zero
Criando uma arquitetura de front-end do zeroCriando uma arquitetura de front-end do zero
Criando uma arquitetura de front-end do zero
 
Apresentação AngularJS - Angular UI
Apresentação AngularJS - Angular UIApresentação AngularJS - Angular UI
Apresentação AngularJS - Angular UI
 
AngularJS com NODE.JS e Socket.IO
AngularJS com NODE.JS e Socket.IOAngularJS com NODE.JS e Socket.IO
AngularJS com NODE.JS e Socket.IO
 
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDA
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDAANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDA
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDA
 
Visão Geral sobre Angular JS
Visão Geral sobre Angular JSVisão Geral sobre Angular JS
Visão Geral sobre Angular JS
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Angular js
Angular jsAngular js
Angular js
 
Como Perder Peso (no browser)
Como Perder Peso (no browser)Como Perder Peso (no browser)
Como Perder Peso (no browser)
 
Desenvolvimento de Aplicações Web AngularJS no Contexto da IoT
Desenvolvimento de Aplicações Web AngularJS no Contexto da IoTDesenvolvimento de Aplicações Web AngularJS no Contexto da IoT
Desenvolvimento de Aplicações Web AngularJS no Contexto da IoT
 
O futuro dos WebApps com AngularJS 2.0
O futuro dos WebApps com AngularJS 2.0O futuro dos WebApps com AngularJS 2.0
O futuro dos WebApps com AngularJS 2.0
 

Destaque

Aumentando a produtividade com Android Libs
Aumentando a produtividade com Android LibsAumentando a produtividade com Android Libs
Aumentando a produtividade com Android LibsNelson Glauber Leal
 
Dominando o Data Binding no Android
Dominando o Data Binding no AndroidDominando o Data Binding no Android
Dominando o Data Binding no AndroidNelson Glauber Leal
 
Dominando o Data Binding no Android
Dominando o Data Binding no AndroidDominando o Data Binding no Android
Dominando o Data Binding no AndroidNelson Glauber Leal
 
Android e iOS: Por que eles são diferentes... ou não.
Android e iOS: Por que eles são diferentes... ou não.Android e iOS: Por que eles são diferentes... ou não.
Android e iOS: Por que eles são diferentes... ou não.Nelson Glauber Leal
 
Desenvolvendo Aplicativos com Android
Desenvolvendo Aplicativos com AndroidDesenvolvendo Aplicativos com Android
Desenvolvendo Aplicativos com AndroidMayron Cachina
 
Mobile, UX e Micro-momentos
Mobile, UX e Micro-momentosMobile, UX e Micro-momentos
Mobile, UX e Micro-momentosJose Papo, MSc
 
Campus Party Recife - Sua primeira e próximas aplicações Android: como fazer ...
Campus Party Recife - Sua primeira e próximas aplicações Android: como fazer ...Campus Party Recife - Sua primeira e próximas aplicações Android: como fazer ...
Campus Party Recife - Sua primeira e próximas aplicações Android: como fazer ...Nelson Glauber Leal
 
Interfaces Inteligentes para Android
Interfaces Inteligentes para AndroidInterfaces Inteligentes para Android
Interfaces Inteligentes para AndroidNelson Glauber Leal
 

Destaque (12)

Aumentando a produtividade com Android Libs
Aumentando a produtividade com Android LibsAumentando a produtividade com Android Libs
Aumentando a produtividade com Android Libs
 
Dominando o Data Binding no Android
Dominando o Data Binding no AndroidDominando o Data Binding no Android
Dominando o Data Binding no Android
 
Dominando o Data Binding no Android
Dominando o Data Binding no AndroidDominando o Data Binding no Android
Dominando o Data Binding no Android
 
Android desenvolvimento
Android desenvolvimentoAndroid desenvolvimento
Android desenvolvimento
 
Android L e Android Wear
Android L e Android WearAndroid L e Android Wear
Android L e Android Wear
 
Android e iOS: Por que eles são diferentes... ou não.
Android e iOS: Por que eles são diferentes... ou não.Android e iOS: Por que eles são diferentes... ou não.
Android e iOS: Por que eles são diferentes... ou não.
 
Desenvolvendo Aplicativos com Android
Desenvolvendo Aplicativos com AndroidDesenvolvendo Aplicativos com Android
Desenvolvendo Aplicativos com Android
 
Android Lollipop + Android Wear
Android Lollipop + Android WearAndroid Lollipop + Android Wear
Android Lollipop + Android Wear
 
Mobile, UX e Micro-momentos
Mobile, UX e Micro-momentosMobile, UX e Micro-momentos
Mobile, UX e Micro-momentos
 
Campus Party Recife - Sua primeira e próximas aplicações Android: como fazer ...
Campus Party Recife - Sua primeira e próximas aplicações Android: como fazer ...Campus Party Recife - Sua primeira e próximas aplicações Android: como fazer ...
Campus Party Recife - Sua primeira e próximas aplicações Android: como fazer ...
 
Interfaces Inteligentes para Android
Interfaces Inteligentes para AndroidInterfaces Inteligentes para Android
Interfaces Inteligentes para Android
 
Android - Conceito e Arquitetura
Android - Conceito e ArquiteturaAndroid - Conceito e Arquitetura
Android - Conceito e Arquitetura
 

Semelhante a Android Libs - AndroidDevConf

Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open WebNovo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open WebLeonardo Balter
 
Drupal 8: desenvolvendo fora da ilha
Drupal 8: desenvolvendo fora da ilhaDrupal 8: desenvolvendo fora da ilha
Drupal 8: desenvolvendo fora da ilhaLuiz Filho
 
Intervalo Técnico - QG Mobile
Intervalo Técnico - QG MobileIntervalo Técnico - QG Mobile
Intervalo Técnico - QG MobileVitor Albuquerque
 
GDG ABC Meetup #5 - Tendências 2015
GDG ABC Meetup #5 - Tendências 2015GDG ABC Meetup #5 - Tendências 2015
GDG ABC Meetup #5 - Tendências 2015Daniel Costa Gimenes
 
Apresentação realidade aumentada para aplicações web e mobile
Apresentação   realidade aumentada para aplicações web e mobileApresentação   realidade aumentada para aplicações web e mobile
Apresentação realidade aumentada para aplicações web e mobileRWTH Aachen University
 
Introdução ao android e plataforma android
Introdução ao android e plataforma androidIntrodução ao android e plataforma android
Introdução ao android e plataforma androidJuarez Junior
 
Android: Por onde começar ?
Android: Por onde começar ?Android: Por onde começar ?
Android: Por onde começar ?GDGFoz
 
Introdução a Plataforma Android
Introdução a Plataforma AndroidIntrodução a Plataforma Android
Introdução a Plataforma AndroidÉdipo Souza
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento webRodrigo Rodrigues
 
Layouts e multiplas activities
Layouts e multiplas activitiesLayouts e multiplas activities
Layouts e multiplas activitiesCalebeMiquissene
 
Lightning components - o que são, quais os seus objectivos e exemplos práticos
Lightning components - o que são, quais os seus objectivos e exemplos práticosLightning components - o que são, quais os seus objectivos e exemplos práticos
Lightning components - o que são, quais os seus objectivos e exemplos práticosDom Digital
 
O que há de novo nas Android Support Libraries
O que há de novo nas Android Support LibrariesO que há de novo nas Android Support Libraries
O que há de novo nas Android Support LibrariesMarcelo Quinta
 
Desenvolvimento Moderno de aplicativos Android
Desenvolvimento Moderno de aplicativos AndroidDesenvolvimento Moderno de aplicativos Android
Desenvolvimento Moderno de aplicativos AndroidNelson Glauber Leal
 
Projeto Web - Aula 1 - Fundamentos do Dev WEB.pptx
Projeto Web - Aula 1 - Fundamentos do Dev WEB.pptxProjeto Web - Aula 1 - Fundamentos do Dev WEB.pptx
Projeto Web - Aula 1 - Fundamentos do Dev WEB.pptxLuiz Antonio
 

Semelhante a Android Libs - AndroidDevConf (20)

Mulheres na tecnologia 2015
Mulheres na tecnologia 2015Mulheres na tecnologia 2015
Mulheres na tecnologia 2015
 
Android - Além do HelloWord
Android - Além do HelloWordAndroid - Além do HelloWord
Android - Além do HelloWord
 
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open WebNovo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
 
Drupal 8: desenvolvendo fora da ilha
Drupal 8: desenvolvendo fora da ilhaDrupal 8: desenvolvendo fora da ilha
Drupal 8: desenvolvendo fora da ilha
 
Intervalo Técnico - QG Mobile
Intervalo Técnico - QG MobileIntervalo Técnico - QG Mobile
Intervalo Técnico - QG Mobile
 
GDG ABC Meetup #5 - Tendências 2015
GDG ABC Meetup #5 - Tendências 2015GDG ABC Meetup #5 - Tendências 2015
GDG ABC Meetup #5 - Tendências 2015
 
Android - Notas de aula
Android - Notas de aulaAndroid - Notas de aula
Android - Notas de aula
 
Apresentação Google Android
Apresentação Google AndroidApresentação Google Android
Apresentação Google Android
 
Apresentação realidade aumentada para aplicações web e mobile
Apresentação   realidade aumentada para aplicações web e mobileApresentação   realidade aumentada para aplicações web e mobile
Apresentação realidade aumentada para aplicações web e mobile
 
Introdução ao android e plataforma android
Introdução ao android e plataforma androidIntrodução ao android e plataforma android
Introdução ao android e plataforma android
 
Android: Por onde começar ?
Android: Por onde começar ?Android: Por onde começar ?
Android: Por onde começar ?
 
Introdução a Plataforma Android
Introdução a Plataforma AndroidIntrodução a Plataforma Android
Introdução a Plataforma Android
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
 
Layouts e multiplas activities
Layouts e multiplas activitiesLayouts e multiplas activities
Layouts e multiplas activities
 
Android User Interface
Android User InterfaceAndroid User Interface
Android User Interface
 
Android
AndroidAndroid
Android
 
Lightning components - o que são, quais os seus objectivos e exemplos práticos
Lightning components - o que são, quais os seus objectivos e exemplos práticosLightning components - o que são, quais os seus objectivos e exemplos práticos
Lightning components - o que são, quais os seus objectivos e exemplos práticos
 
O que há de novo nas Android Support Libraries
O que há de novo nas Android Support LibrariesO que há de novo nas Android Support Libraries
O que há de novo nas Android Support Libraries
 
Desenvolvimento Moderno de aplicativos Android
Desenvolvimento Moderno de aplicativos AndroidDesenvolvimento Moderno de aplicativos Android
Desenvolvimento Moderno de aplicativos Android
 
Projeto Web - Aula 1 - Fundamentos do Dev WEB.pptx
Projeto Web - Aula 1 - Fundamentos do Dev WEB.pptxProjeto Web - Aula 1 - Fundamentos do Dev WEB.pptx
Projeto Web - Aula 1 - Fundamentos do Dev WEB.pptx
 

Mais de Nelson Glauber Leal

Seu primeiro app Android e iOS com Compose Multiplatform
Seu primeiro app Android e iOS com Compose MultiplatformSeu primeiro app Android e iOS com Compose Multiplatform
Seu primeiro app Android e iOS com Compose MultiplatformNelson Glauber Leal
 
Desenvolvimento Moderno de Aplicações Android 2023
Desenvolvimento Moderno de Aplicações Android 2023Desenvolvimento Moderno de Aplicações Android 2023
Desenvolvimento Moderno de Aplicações Android 2023Nelson Glauber Leal
 
Novidades incríveis do Android em 2023
Novidades incríveis do Android em 2023Novidades incríveis do Android em 2023
Novidades incríveis do Android em 2023Nelson Glauber Leal
 
Novidades das Bibliotecas Jetpack do Android (2021)
Novidades das Bibliotecas Jetpack do Android (2021)Novidades das Bibliotecas Jetpack do Android (2021)
Novidades das Bibliotecas Jetpack do Android (2021)Nelson Glauber Leal
 
Android Jetpack Compose - Turkey 2021
Android Jetpack Compose - Turkey 2021Android Jetpack Compose - Turkey 2021
Android Jetpack Compose - Turkey 2021Nelson Glauber Leal
 
Jetpack Compose a new way to implement UI on Android
Jetpack Compose a new way to implement UI on AndroidJetpack Compose a new way to implement UI on Android
Jetpack Compose a new way to implement UI on AndroidNelson Glauber Leal
 
Jetpack Compose a nova forma de implementar UI no Android
Jetpack Compose a nova forma de implementar UI no AndroidJetpack Compose a nova forma de implementar UI no Android
Jetpack Compose a nova forma de implementar UI no AndroidNelson Glauber Leal
 
Aplicações assíncronas no Android com
Coroutines & Jetpack
Aplicações assíncronas no Android com
Coroutines & JetpackAplicações assíncronas no Android com
Coroutines & Jetpack
Aplicações assíncronas no Android com
Coroutines & JetpackNelson Glauber Leal
 
Aplicações assíncronas no Android com
Coroutines & Jetpack
Aplicações assíncronas no Android com
Coroutines & JetpackAplicações assíncronas no Android com
Coroutines & Jetpack
Aplicações assíncronas no Android com
Coroutines & JetpackNelson Glauber Leal
 
O que é preciso para ser um desenvolvedor Android
O que é preciso para ser um desenvolvedor AndroidO que é preciso para ser um desenvolvedor Android
O que é preciso para ser um desenvolvedor AndroidNelson Glauber Leal
 
Arquitetando seu app Android com Jetpack
Arquitetando seu app Android com JetpackArquitetando seu app Android com Jetpack
Arquitetando seu app Android com JetpackNelson Glauber Leal
 
Arquitetando seu app Android com Jetpack
Arquitetando seu app Android com JetpackArquitetando seu app Android com Jetpack
Arquitetando seu app Android com JetpackNelson Glauber Leal
 
Aplicações Assíncronas no Android com Coroutines e Jetpack
Aplicações Assíncronas no Android com Coroutines e JetpackAplicações Assíncronas no Android com Coroutines e Jetpack
Aplicações Assíncronas no Android com Coroutines e JetpackNelson Glauber Leal
 
Mastering Kotlin Standard Library
Mastering Kotlin Standard LibraryMastering Kotlin Standard Library
Mastering Kotlin Standard LibraryNelson Glauber Leal
 
Aplicações assíncronas no Android com Coroutines & Jetpack
Aplicações assíncronas no Android com Coroutines & JetpackAplicações assíncronas no Android com Coroutines & Jetpack
Aplicações assíncronas no Android com Coroutines & JetpackNelson Glauber Leal
 
Introdução ao Desenvolvimento Android com Kotlin
Introdução ao Desenvolvimento Android com KotlinIntrodução ao Desenvolvimento Android com Kotlin
Introdução ao Desenvolvimento Android com KotlinNelson Glauber Leal
 
Persisting Data on SQLite using Room
Persisting Data on SQLite using RoomPersisting Data on SQLite using Room
Persisting Data on SQLite using RoomNelson Glauber Leal
 
Arquitetando seu aplicativo Android com Jetpack
Arquitetando seu aplicativo Android com JetpackArquitetando seu aplicativo Android com Jetpack
Arquitetando seu aplicativo Android com JetpackNelson Glauber Leal
 
Desenvolvimento Moderno de Aplicativos Android
Desenvolvimento Moderno de Aplicativos AndroidDesenvolvimento Moderno de Aplicativos Android
Desenvolvimento Moderno de Aplicativos AndroidNelson Glauber Leal
 
Turbinando o desenvolvimento Android com Kotlin
Turbinando o desenvolvimento Android com KotlinTurbinando o desenvolvimento Android com Kotlin
Turbinando o desenvolvimento Android com KotlinNelson Glauber Leal
 

Mais de Nelson Glauber Leal (20)

Seu primeiro app Android e iOS com Compose Multiplatform
Seu primeiro app Android e iOS com Compose MultiplatformSeu primeiro app Android e iOS com Compose Multiplatform
Seu primeiro app Android e iOS com Compose Multiplatform
 
Desenvolvimento Moderno de Aplicações Android 2023
Desenvolvimento Moderno de Aplicações Android 2023Desenvolvimento Moderno de Aplicações Android 2023
Desenvolvimento Moderno de Aplicações Android 2023
 
Novidades incríveis do Android em 2023
Novidades incríveis do Android em 2023Novidades incríveis do Android em 2023
Novidades incríveis do Android em 2023
 
Novidades das Bibliotecas Jetpack do Android (2021)
Novidades das Bibliotecas Jetpack do Android (2021)Novidades das Bibliotecas Jetpack do Android (2021)
Novidades das Bibliotecas Jetpack do Android (2021)
 
Android Jetpack Compose - Turkey 2021
Android Jetpack Compose - Turkey 2021Android Jetpack Compose - Turkey 2021
Android Jetpack Compose - Turkey 2021
 
Jetpack Compose a new way to implement UI on Android
Jetpack Compose a new way to implement UI on AndroidJetpack Compose a new way to implement UI on Android
Jetpack Compose a new way to implement UI on Android
 
Jetpack Compose a nova forma de implementar UI no Android
Jetpack Compose a nova forma de implementar UI no AndroidJetpack Compose a nova forma de implementar UI no Android
Jetpack Compose a nova forma de implementar UI no Android
 
Aplicações assíncronas no Android com
Coroutines & Jetpack
Aplicações assíncronas no Android com
Coroutines & JetpackAplicações assíncronas no Android com
Coroutines & Jetpack
Aplicações assíncronas no Android com
Coroutines & Jetpack
 
Aplicações assíncronas no Android com
Coroutines & Jetpack
Aplicações assíncronas no Android com
Coroutines & JetpackAplicações assíncronas no Android com
Coroutines & Jetpack
Aplicações assíncronas no Android com
Coroutines & Jetpack
 
O que é preciso para ser um desenvolvedor Android
O que é preciso para ser um desenvolvedor AndroidO que é preciso para ser um desenvolvedor Android
O que é preciso para ser um desenvolvedor Android
 
Arquitetando seu app Android com Jetpack
Arquitetando seu app Android com JetpackArquitetando seu app Android com Jetpack
Arquitetando seu app Android com Jetpack
 
Arquitetando seu app Android com Jetpack
Arquitetando seu app Android com JetpackArquitetando seu app Android com Jetpack
Arquitetando seu app Android com Jetpack
 
Aplicações Assíncronas no Android com Coroutines e Jetpack
Aplicações Assíncronas no Android com Coroutines e JetpackAplicações Assíncronas no Android com Coroutines e Jetpack
Aplicações Assíncronas no Android com Coroutines e Jetpack
 
Mastering Kotlin Standard Library
Mastering Kotlin Standard LibraryMastering Kotlin Standard Library
Mastering Kotlin Standard Library
 
Aplicações assíncronas no Android com Coroutines & Jetpack
Aplicações assíncronas no Android com Coroutines & JetpackAplicações assíncronas no Android com Coroutines & Jetpack
Aplicações assíncronas no Android com Coroutines & Jetpack
 
Introdução ao Desenvolvimento Android com Kotlin
Introdução ao Desenvolvimento Android com KotlinIntrodução ao Desenvolvimento Android com Kotlin
Introdução ao Desenvolvimento Android com Kotlin
 
Persisting Data on SQLite using Room
Persisting Data on SQLite using RoomPersisting Data on SQLite using Room
Persisting Data on SQLite using Room
 
Arquitetando seu aplicativo Android com Jetpack
Arquitetando seu aplicativo Android com JetpackArquitetando seu aplicativo Android com Jetpack
Arquitetando seu aplicativo Android com Jetpack
 
Desenvolvimento Moderno de Aplicativos Android
Desenvolvimento Moderno de Aplicativos AndroidDesenvolvimento Moderno de Aplicativos Android
Desenvolvimento Moderno de Aplicativos Android
 
Turbinando o desenvolvimento Android com Kotlin
Turbinando o desenvolvimento Android com KotlinTurbinando o desenvolvimento Android com Kotlin
Turbinando o desenvolvimento Android com Kotlin
 

Android Libs - AndroidDevConf