SlideShare una empresa de Scribd logo
1 de 100
Descargar para leer sin conexión
by Daniel Baccin
Saindo da zona de conforto… resolvi
aprender Android !
Mas por que Android ???
Documentação excelente
Crescimento no número de apps
Fonte: http://www.statista.com/statistics/266210/number-of-available-applications-in-the-google-play-store/
Versões
Material Design
Resolvi aprender android !
Rápido resultado
336 !!!
Para tudo eu imagino um app
Primeiros desafios
Estrutura do Projeto
Classes JAVA
Estrutura do Projeto
Recursos
Estrutura do Projeto
AndroidManifest
Estrutura do Projeto
Gradle
Conceitos básicos
Activity Intent
AndroidManifest
XML de
Layout
Conceitos básicos
Activity Intent
AndroidManifest
XML de
Layout
Comportamento
public class FormularioActivity extends Activity{
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.formulario);
// fazer coisas legais aqui
}
}
Activity
Comportamento
public class FormularioActivity extends Activity{
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.formulario);
// fazer coisas legais aqui
}
}
Activity
Aparência
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<ImageView
android:id="@+id/icon_participante"
android:layout_width="52px"
android:layout_height="52px"
android:src="@drawable/ic_action_accept"/>
<TextView
android:id="@+id/lista_aluno_nome"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="60px"
android:textColor="@color/Black"/>
</LinearLayout>
XML de
Layout
Aparência
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<ImageView
android:id="@+id/icon_participante"
android:layout_width="52px"
android:layout_height="52px"
android:src="@drawable/ic_action_accept"/>
<TextView
android:id="@+id/lista_aluno_nome"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="60px"
android:textColor="@color/Black"/>
</LinearLayout>
XML de
Layout
Aparência
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<ImageView
android:id="@+id/icon_participante"
android:layout_width="52px"
android:layout_height="52px"
android:src="@drawable/ic_action_accept"/>
<TextView
android:id="@+id/lista_aluno_nome"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="60px"
android:textColor="@color/Black"/>
</LinearLayout>
XML de
Layout
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listaDeParticipantes = (ListView) findViewById(R.id.listParticipantes);
listaDeParticipantes.setOnItemClickListener(this);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fabAddParticipante);
fab.attachToListView(listaDeParticipantes);
actionBar = getSupportActionBar();
if(actionBar!=null){
actionBar.setBackgroundDrawable(new ColorDrawable(0xFFFF4500));
actionBar.setTitle(R.string.lista_participantes);
}
}
Activity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listaDeParticipantes = (ListView) findViewById(R.id.listParticipantes);
listaDeParticipantes.setOnItemClickListener(this);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fabAddParticipante);
fab.attachToListView(listaDeParticipantes);
actionBar = getSupportActionBar();
if(actionBar!=null){
actionBar.setBackgroundDrawable(new ColorDrawable(0xFFFF4500));
actionBar.setTitle(R.string.lista_participantes);
}
}
Activity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listaDeParticipantes = (ListView) findViewById(R.id.listParticipantes);
listaDeParticipantes.setOnItemClickListener(this);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fabAddParticipante);
fab.attachToListView(listaDeParticipantes);
actionBar = getSupportActionBar();
if(actionBar!=null){
actionBar.setBackgroundDrawable(new ColorDrawable(0xFFFF4500));
actionBar.setTitle(R.string.lista_participantes);
}
}
Activity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listaDeParticipantes = (ListView) findViewById(R.id.listParticipantes);
listaDeParticipantes.setOnItemClickListener(this);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fabAddParticipante);
fab.attachToListView(listaDeParticipantes);
actionBar = getSupportActionBar();
if(actionBar!=null){
actionBar.setBackgroundDrawable(new ColorDrawable(0xFFFF4500));
actionBar.setTitle(R.string.lista_participantes);
}
}
Activity
Activity
Activity
Activity
Activity
Activity
Activity
Conceitos básicos
Activity Intent
AndroidManifest
XML de
Layout
public void abrirFormParticipante(View view){
Intent irParaFormulario = new Intent(this, FormularioParticipanteActivity.class);
startActivity(irParaFormulario);
}
Intent
Conceitos básicos
Activity Intent
AndroidManifest
XML de
Layout
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="br.com.kenuiapps.palestra" >
<application
android:allowBackup="true"
android:icon="@drawable/java_ce"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".activity.ListaParticipantesActivity"
android:theme="@style/Theme.AppCompat.Light.DarkActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".activity.FormularioParticipanteActivity"
android:theme="@style/Theme.AppCompat.Light.DarkActionBar"/>
</application>
</manifest>
AndroidManifest
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="br.com.kenuiapps.palestra" >
<application
android:allowBackup="true"
android:icon="@drawable/java_ce"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".activity.ListaParticipantesActivity"
android:theme="@style/Theme.AppCompat.Light.DarkActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".activity.FormularioParticipanteActivity"
android:theme="@style/Theme.AppCompat.Light.DarkActionBar"/>
</application>
</manifest>
AndroidManifest
Mais conceitos...
Adapter SQLite DAO Test
Mais conceitos...
Adapter SQLite DAO Test
@Override
protected void onResume() {
super.onResume();
List<Participante> participantes = obtemListaDoBanco();
ListaParticipantesAdapter adapter =
new ListaParticipantesAdapter(this, participantes);
listViewDeParticipantes.setAdapter(adapter);
}
Adapter
public class ListaParticipantesAdapter extends BaseAdapter {
private Activity activity;
private List<Participante> participantes;
public ListaParticipantesAdapter(Activity activity, List<Participante> participantes) {
this.activity = activity;
this.participantes = participantes;
}
...
}
Adapter
public class ListaParticipantesAdapter extends BaseAdapter {
private Activity activity;
private List<Participante> participantes;
public ListaParticipantesAdapter(Activity activity, List<Participante> participantes) {
this.activity = activity;
this.participantes = participantes;
}
...
}
Adapter
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View linha = activity.getLayoutInflater().inflate(R.layout.lista_participantes, null);
Participante participante = participantes.get(position);
TextView textViewNome = (TextView) linha.findViewById(R.id.lista_nome);
textViewNome.setText(participante.getNome());
...
}
Adapter
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View linha = activity.getLayoutInflater().inflate(R.layout.lista_participantes, null);
Participante participante = participantes.get(position);
TextView textViewNome = (TextView) linha.findViewById(R.id.lista_nome);
textViewNome.setText(participante.getNome());
...
}
Adapter
textViewNome
Mais conceitos...
Adapter SQLite DAO Test
public class DataBaseHelper extends SQLiteOpenHelper {
public static final String BANCO_DADOS = "Palestra";
private static int VERSAO = 1;
public DataBaseHelper(Context context) {
super(context, BANCO_DADOS, null, VERSAO);
}
SQLite
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE participante"+
" ( _id INTEGER PRIMARY KEY," +
" nome TEXT," +
" telefone TEXT," +
" email TEXT," +
" presente INTEGER, " +
" tamanhoBlusa INTEGER" +
" );"
);
}
SQLite
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String dll = "DROP TABLE IF EXISTS participante";
db.execSQL(dll);
this.onCreate(db);
}
SQLite
Mais conceitos...
Adapter SQLite DAO Test
public class ParticipanteDAO{
private DataBaseHelper helper;
private SQLiteDatabase db;
public PalestraDAO(Context context){
helper = new DataBaseHelper(context);
}
public SQLiteDatabase getDb() {
if (db == null) {
db = helper.getWritableDatabase();
}
return db;
}
DAO
public class ParticipanteDAO{
private DataBaseHelper helper;
private SQLiteDatabase db;
public PalestraDAO(Context context){
helper = new DataBaseHelper(context);
}
public SQLiteDatabase getDb() {
if (db == null) {
db = helper.getWritableDatabase();
}
return db;
}
DAO
public class ParticipanteDAO{
...
public long salva(Participante participante) {
ContentValues values = participante.getContentValues();
return getDb().insert(DataBaseHelper.Participante.TABELA, null, values);
}
....
DAO
public ContentValues getContentValues() {
ContentValues values = new ContentValues();
values.put(DataBaseHelper.Participante.ID, getId());
values.put(DataBaseHelper.Participante.NOME, getNome());
...
return values;
}
DAO
Mais conceitos...
Adapter SQLite DAO Test
public class ParticipanteDAOTest extends AndroidTestCase {
public void testInsertDb()
{
ParticipanteDAO dao = new ParticipanteDAO(mContext);
long qtdDeLinhasInseridas = dao.salva(dadoUmParticipante());
assertTrue(qtdDeLinhasInseridas>0);
}
}
Test
public class ParticipanteDAOTest extends AndroidTestCase {
public void testInsertDb()
{
ParticipanteDAO dao = new ParticipanteDAO(mContext);
long qtdDeLinhasInseridas = dao.salva(dadoUmParticipante());
assertTrue(qtdDeLinhasInseridas>0);
}
}
Test
Novidades Google I/O 2015
Internet das coisas
Tecido sensivel ao toque
Android Pay
Android Development Tools
Android Development Tools
Futuro???
Onde buscar o conhecimento?
●Getting Started
●Google+ & Udacity
●Alura
●Comunidades no Google+
●Grupos Google
●Java CE
●Stack overflow
Referências
● http://www.androidcentral.com/android-50-lollipop-now-33-percent-devices
● http://www.android.com/play/
● http://developer.android.com/about/dashboards/index.html
● http://www.google.com/design/spec/material-design/introduction.html
● https://developer.android.com/guide/index.html
● http://gizmodo.uol.com.br/google-brillo-weave/
● http://gizmodo.uol.com.br/android-pay-oficial/
● http://gizmodo.uol.com.br/android-m-oficial/
● http://olhardigital.uol.com.br/noticia/google-lanca-tecnologia-de-tecido-sensivel-ao-toque/48855
● http://info.abril.com.br/noticias/ti/2015/05/google-e-udacity-lancam-serie-completa-de-cursos-sobre-desenvolvimento-em-android.shtml
● https://dariomungoi.wordpress.com
● http://tudoandroid.net.br/googles-material-design-wins-award-best-contribution-ux/
● http://robovm.com/google-io-summary-whats-new-in-android-development-tools/
● http://www.androidcentral.com/
● http://careers.stackoverflow.com/jobs/tag/android
Go Developers!!!
daniel.baccin@gmail.com
https://bitbucket.org/danielbaccin
https://github.com/danielbaccin/Palestra
http://www.slideshare.net/baccin

Más contenido relacionado

La actualidad más candente

Sharper Better Faster Dagger ‡ - Droidcon SF
Sharper Better Faster Dagger ‡ - Droidcon SFSharper Better Faster Dagger ‡ - Droidcon SF
Sharper Better Faster Dagger ‡ - Droidcon SFPierre-Yves Ricau
 
Android development - Activities, Views & Intents
Android development - Activities, Views & IntentsAndroid development - Activities, Views & Intents
Android development - Activities, Views & IntentsLope Emano
 
Google Plus SignIn : l'Authentification Google
Google Plus SignIn : l'Authentification GoogleGoogle Plus SignIn : l'Authentification Google
Google Plus SignIn : l'Authentification GoogleMathias Seguy
 
Droidcon2013 android experience lahoda
Droidcon2013 android experience lahodaDroidcon2013 android experience lahoda
Droidcon2013 android experience lahodaDroidcon Berlin
 
Improving android experience for both users and developers
Improving android experience for both users and developersImproving android experience for both users and developers
Improving android experience for both users and developersPavel Lahoda
 
Android my Scala @ JFokus 2013
Android my Scala @ JFokus 2013Android my Scala @ JFokus 2013
Android my Scala @ JFokus 2013Konrad Malawski
 
Slightly Advanced Android Wear ;)
Slightly Advanced Android Wear ;)Slightly Advanced Android Wear ;)
Slightly Advanced Android Wear ;)Alfredo Morresi
 
Android: Intent, Intent Filter, Broadcast Receivers
Android: Intent, Intent Filter, Broadcast ReceiversAndroid: Intent, Intent Filter, Broadcast Receivers
Android: Intent, Intent Filter, Broadcast ReceiversCodeAndroid
 

La actualidad más candente (13)

Sharper Better Faster Dagger ‡ - Droidcon SF
Sharper Better Faster Dagger ‡ - Droidcon SFSharper Better Faster Dagger ‡ - Droidcon SF
Sharper Better Faster Dagger ‡ - Droidcon SF
 
Activities
ActivitiesActivities
Activities
 
Android development - Activities, Views & Intents
Android development - Activities, Views & IntentsAndroid development - Activities, Views & Intents
Android development - Activities, Views & Intents
 
Action bar
Action barAction bar
Action bar
 
Google Plus SignIn : l'Authentification Google
Google Plus SignIn : l'Authentification GoogleGoogle Plus SignIn : l'Authentification Google
Google Plus SignIn : l'Authentification Google
 
Droidcon2013 android experience lahoda
Droidcon2013 android experience lahodaDroidcon2013 android experience lahoda
Droidcon2013 android experience lahoda
 
Improving android experience for both users and developers
Improving android experience for both users and developersImproving android experience for both users and developers
Improving android experience for both users and developers
 
Android my Scala @ JFokus 2013
Android my Scala @ JFokus 2013Android my Scala @ JFokus 2013
Android my Scala @ JFokus 2013
 
Jface
JfaceJface
Jface
 
Ruby conf2012
Ruby conf2012Ruby conf2012
Ruby conf2012
 
Slightly Advanced Android Wear ;)
Slightly Advanced Android Wear ;)Slightly Advanced Android Wear ;)
Slightly Advanced Android Wear ;)
 
Grails Advanced
Grails Advanced Grails Advanced
Grails Advanced
 
Android: Intent, Intent Filter, Broadcast Receivers
Android: Intent, Intent Filter, Broadcast ReceiversAndroid: Intent, Intent Filter, Broadcast Receivers
Android: Intent, Intent Filter, Broadcast Receivers
 

Destacado

Mimiran Deal Manager 2009
Mimiran Deal Manager 2009Mimiran Deal Manager 2009
Mimiran Deal Manager 2009mbullen
 
20090201淡水八里
20090201淡水八里20090201淡水八里
20090201淡水八里asuperyun
 
Sharons Walk
Sharons WalkSharons Walk
Sharons WalkAVandiver
 
Customer centric at its best with Zappos &amp; Parature
Customer centric at its best with Zappos &amp; ParatureCustomer centric at its best with Zappos &amp; Parature
Customer centric at its best with Zappos &amp; Paraturembullen
 
Vlctorla異國料理
Vlctorla異國料理Vlctorla異國料理
Vlctorla異國料理asuperyun
 
Smart urban Facilities monitoring for U-City performance evaluation methods
Smart urban Facilities monitoring for U-City performance evaluation methodsSmart urban Facilities monitoring for U-City performance evaluation methods
Smart urban Facilities monitoring for U-City performance evaluation methodsonlymarch
 
Criando meu 1º game com android
Criando meu 1º game com androidCriando meu 1º game com android
Criando meu 1º game com androidDaniel Baccin
 
시민참여형 U-City 구현을 위한 도시모니터링 시스템의 기초연구
시민참여형 U-City 구현을 위한 도시모니터링 시스템의 기초연구시민참여형 U-City 구현을 위한 도시모니터링 시스템의 기초연구
시민참여형 U-City 구현을 위한 도시모니터링 시스템의 기초연구onlymarch
 
Cool NXT Robots
Cool NXT RobotsCool NXT Robots
Cool NXT RobotsTong Jiang
 
도시정보와 통합된 환경 및 시설정보의 효과적 가시화 기법
도시정보와 통합된 환경 및 시설정보의 효과적 가시화 기법도시정보와 통합된 환경 및 시설정보의 효과적 가시화 기법
도시정보와 통합된 환경 및 시설정보의 효과적 가시화 기법onlymarch
 
Quick tips for android
Quick tips for androidQuick tips for android
Quick tips for androidDaniel Baccin
 

Destacado (13)

Mimiran Deal Manager 2009
Mimiran Deal Manager 2009Mimiran Deal Manager 2009
Mimiran Deal Manager 2009
 
20090201淡水八里
20090201淡水八里20090201淡水八里
20090201淡水八里
 
Sharons Walk
Sharons WalkSharons Walk
Sharons Walk
 
Customer centric at its best with Zappos &amp; Parature
Customer centric at its best with Zappos &amp; ParatureCustomer centric at its best with Zappos &amp; Parature
Customer centric at its best with Zappos &amp; Parature
 
Vlctorla異國料理
Vlctorla異國料理Vlctorla異國料理
Vlctorla異國料理
 
St TGH En St TOEKOMST
St TGH En St TOEKOMSTSt TGH En St TOEKOMST
St TGH En St TOEKOMST
 
Fundraising, Grantmaking & Sponsoring - (van minor afgeleid) cursusaanbod
Fundraising, Grantmaking & Sponsoring - (van minor afgeleid) cursusaanbodFundraising, Grantmaking & Sponsoring - (van minor afgeleid) cursusaanbod
Fundraising, Grantmaking & Sponsoring - (van minor afgeleid) cursusaanbod
 
Smart urban Facilities monitoring for U-City performance evaluation methods
Smart urban Facilities monitoring for U-City performance evaluation methodsSmart urban Facilities monitoring for U-City performance evaluation methods
Smart urban Facilities monitoring for U-City performance evaluation methods
 
Criando meu 1º game com android
Criando meu 1º game com androidCriando meu 1º game com android
Criando meu 1º game com android
 
시민참여형 U-City 구현을 위한 도시모니터링 시스템의 기초연구
시민참여형 U-City 구현을 위한 도시모니터링 시스템의 기초연구시민참여형 U-City 구현을 위한 도시모니터링 시스템의 기초연구
시민참여형 U-City 구현을 위한 도시모니터링 시스템의 기초연구
 
Cool NXT Robots
Cool NXT RobotsCool NXT Robots
Cool NXT Robots
 
도시정보와 통합된 환경 및 시설정보의 효과적 가시화 기법
도시정보와 통합된 환경 및 시설정보의 효과적 가시화 기법도시정보와 통합된 환경 및 시설정보의 효과적 가시화 기법
도시정보와 통합된 환경 및 시설정보의 효과적 가시화 기법
 
Quick tips for android
Quick tips for androidQuick tips for android
Quick tips for android
 

Similar a Saindo da zona de conforto… resolvi aprender android

Android por onde começar? Mini Curso Erbase 2015
Android por onde começar? Mini Curso Erbase 2015 Android por onde começar? Mini Curso Erbase 2015
Android por onde começar? Mini Curso Erbase 2015 Mario Jorge Pereira
 
How to code to code less
How to code to code lessHow to code to code less
How to code to code lessAnton Novikau
 
Overview of Android Infrastructure
Overview of Android InfrastructureOverview of Android Infrastructure
Overview of Android InfrastructureAlexey Buzdin
 
Overview of Android Infrastructure
Overview of Android InfrastructureOverview of Android Infrastructure
Overview of Android InfrastructureC.T.Co
 
Android Design Patterns
Android Design PatternsAndroid Design Patterns
Android Design PatternsGodfrey Nolan
 
Getting the Most Out of jQuery Widgets
Getting the Most Out of jQuery WidgetsGetting the Most Out of jQuery Widgets
Getting the Most Out of jQuery Widgetsvelveeta_512
 
From Legacy to Hexagonal (An Unexpected Android Journey)
From Legacy to Hexagonal (An Unexpected Android Journey)From Legacy to Hexagonal (An Unexpected Android Journey)
From Legacy to Hexagonal (An Unexpected Android Journey)Jose Manuel Pereira Garcia
 
Design Patterns for Tablets and Smartphones
Design Patterns for Tablets and SmartphonesDesign Patterns for Tablets and Smartphones
Design Patterns for Tablets and SmartphonesMichael Galpin
 
Android Best Practices
Android Best PracticesAndroid Best Practices
Android Best PracticesYekmer Simsek
 
Building Modern Apps using Android Architecture Components
Building Modern Apps using Android Architecture ComponentsBuilding Modern Apps using Android Architecture Components
Building Modern Apps using Android Architecture ComponentsHassan Abid
 
Android app development basics
Android app development basicsAndroid app development basics
Android app development basicsAnton Narusberg
 
The Best Way to Become an Android Developer Expert with Android Jetpack
The Best Way to Become an Android Developer Expert  with Android JetpackThe Best Way to Become an Android Developer Expert  with Android Jetpack
The Best Way to Become an Android Developer Expert with Android JetpackAhmad Arif Faizin
 
Rohit android lab projects in suresh gyan vihar
Rohit android lab projects in suresh gyan viharRohit android lab projects in suresh gyan vihar
Rohit android lab projects in suresh gyan viharRohit malav
 
What's New in Android
What's New in AndroidWhat's New in Android
What's New in AndroidRobert Cooper
 
Android activity, service, and broadcast recievers
Android activity, service, and broadcast recieversAndroid activity, service, and broadcast recievers
Android activity, service, and broadcast recieversUtkarsh Mankad
 
04 activities - Android
04   activities - Android04   activities - Android
04 activities - AndroidWingston
 

Similar a Saindo da zona de conforto… resolvi aprender android (20)

Android por onde começar? Mini Curso Erbase 2015
Android por onde começar? Mini Curso Erbase 2015 Android por onde começar? Mini Curso Erbase 2015
Android por onde começar? Mini Curso Erbase 2015
 
How to code to code less
How to code to code lessHow to code to code less
How to code to code less
 
Overview of Android Infrastructure
Overview of Android InfrastructureOverview of Android Infrastructure
Overview of Android Infrastructure
 
Overview of Android Infrastructure
Overview of Android InfrastructureOverview of Android Infrastructure
Overview of Android Infrastructure
 
Android Design Patterns
Android Design PatternsAndroid Design Patterns
Android Design Patterns
 
Android best practices
Android best practicesAndroid best practices
Android best practices
 
Getting the Most Out of jQuery Widgets
Getting the Most Out of jQuery WidgetsGetting the Most Out of jQuery Widgets
Getting the Most Out of jQuery Widgets
 
From Legacy to Hexagonal (An Unexpected Android Journey)
From Legacy to Hexagonal (An Unexpected Android Journey)From Legacy to Hexagonal (An Unexpected Android Journey)
From Legacy to Hexagonal (An Unexpected Android Journey)
 
Mini curso Android
Mini curso AndroidMini curso Android
Mini curso Android
 
Design Patterns for Tablets and Smartphones
Design Patterns for Tablets and SmartphonesDesign Patterns for Tablets and Smartphones
Design Patterns for Tablets and Smartphones
 
Android Best Practices
Android Best PracticesAndroid Best Practices
Android Best Practices
 
Building Modern Apps using Android Architecture Components
Building Modern Apps using Android Architecture ComponentsBuilding Modern Apps using Android Architecture Components
Building Modern Apps using Android Architecture Components
 
Android 3
Android 3Android 3
Android 3
 
Android app development basics
Android app development basicsAndroid app development basics
Android app development basics
 
The Best Way to Become an Android Developer Expert with Android Jetpack
The Best Way to Become an Android Developer Expert  with Android JetpackThe Best Way to Become an Android Developer Expert  with Android Jetpack
The Best Way to Become an Android Developer Expert with Android Jetpack
 
Rohit android lab projects in suresh gyan vihar
Rohit android lab projects in suresh gyan viharRohit android lab projects in suresh gyan vihar
Rohit android lab projects in suresh gyan vihar
 
What's New in Android
What's New in AndroidWhat's New in Android
What's New in Android
 
Android activity, service, and broadcast recievers
Android activity, service, and broadcast recieversAndroid activity, service, and broadcast recievers
Android activity, service, and broadcast recievers
 
Android workshop
Android workshopAndroid workshop
Android workshop
 
04 activities - Android
04   activities - Android04   activities - Android
04 activities - Android
 

Último

FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCRFULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCRnishacall1
 
Leading Mobile App Development Companies in India (2).pdf
Leading Mobile App Development Companies in India (2).pdfLeading Mobile App Development Companies in India (2).pdf
Leading Mobile App Development Companies in India (2).pdfCWS Technology
 
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost LoverPowerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost LoverPsychicRuben LoveSpells
 
9999266834 Call Girls In Noida Sector 52 (Delhi) Call Girl Service
9999266834 Call Girls In Noida Sector 52 (Delhi) Call Girl Service9999266834 Call Girls In Noida Sector 52 (Delhi) Call Girl Service
9999266834 Call Girls In Noida Sector 52 (Delhi) Call Girl Servicenishacall1
 
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort ServiceBDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort ServiceDelhi Call girls
 

Último (6)

FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCRFULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
 
Leading Mobile App Development Companies in India (2).pdf
Leading Mobile App Development Companies in India (2).pdfLeading Mobile App Development Companies in India (2).pdf
Leading Mobile App Development Companies in India (2).pdf
 
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost LoverPowerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
 
9999266834 Call Girls In Noida Sector 52 (Delhi) Call Girl Service
9999266834 Call Girls In Noida Sector 52 (Delhi) Call Girl Service9999266834 Call Girls In Noida Sector 52 (Delhi) Call Girl Service
9999266834 Call Girls In Noida Sector 52 (Delhi) Call Girl Service
 
Obat Penggugur Kandungan Di Apotik Kimia Farma (087776558899)
Obat Penggugur Kandungan Di Apotik Kimia Farma (087776558899)Obat Penggugur Kandungan Di Apotik Kimia Farma (087776558899)
Obat Penggugur Kandungan Di Apotik Kimia Farma (087776558899)
 
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort ServiceBDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
 

Saindo da zona de conforto… resolvi aprender android