69
Na prática com Android Annotations, GreenDAO, EventBus e Crouton.

Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

Embed Size (px)

DESCRIPTION

Minicurso sobre Android Annotations, GreenDAO, EventBus e Crouton ocorrido em 22 de outubro no TechNight 2014, na Universidade do Sul de Santa Catarina.

Citation preview

Page 1: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

Na prática com Android Annotations, GreenDAO, EventBus e Crouton.

Page 2: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

1. Conhecimento intermediário em Java;

2. Conhecimento básico em Android (configurar o ambiente

de desenvolvimento / Android SDK / Android AVD,

construir e executar um app do tipo HelloWorld);

3. Para notebooks pessoais, preparar o ambiente de

desenvolvimento.

Page 3: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

1. Saber clonar um repositório Git do GitHub (git clone);

2. Saber trocar de branch’s com Git (git checkout);

Page 4: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

1. Configurar o ambiente de desenvolvimento;

Page 5: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

1. Configurar o ambiente de desenvolvimento;

2. Iniciar um projeto do zero;

Page 6: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

1. Configurar o ambiente de desenvolvimento;

2. Iniciar um projeto do zero;

3. Comandos do Git;

Page 7: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

1. Configurar o ambiente de desenvolvimento;

2. Iniciar um projeto do zero;

3. Comandos do Git;

4. Customizar estilos;

Page 8: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

1. Configurar o ambiente de desenvolvimento;

2. Iniciar um projeto do zero;

3. Comandos do Git;

4. Customizar estilos;

5. Boas práticas de programação;

Page 9: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

1. Configurar o ambiente de desenvolvimento;

2. Iniciar um projeto do zero;

3. Comandos do Git;

4. Customizar estilos;

5. Boas práticas de programação;

6. Ferramentas de build (Gradle ou Maven).

Page 10: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton
Page 11: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton
Page 12: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton
Page 13: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

DAO | EventBus

Page 14: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

DAO | EventBus

Page 15: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton
Page 17: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

GreenDAO

● Framework open-source;

Page 18: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

GreenDAO

● Framework open-source;● Facilita a comunicação com SQLite;

Page 19: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

GreenDAO

● Framework open-source;● Facilita a comunicação com SQLite;● API simples;

Page 20: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

GreenDAO

● Framework open-source;● Facilita a comunicação com SQLite;● API simples;● Otimizado para Android;

Page 21: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

GreenDAO

● Framework open-source;● Facilita a comunicação com SQLite;● API simples;● Otimizado para Android;● Consumo mínimo de memória;

Page 22: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

GreenDAO

● Framework open-source;● Facilita a comunicação com SQLite;● API simples;● Otimizado para Android;● Consumo mínimo de memória;● Biblioteca pequena (menos de 100k);

Page 23: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

GreenDAO

● Framework open-source;● Facilita a comunicação com SQLite;● API simples;● Otimizado para Android;● Consumo mínimo de memória;● Biblioteca pequena (menos de 100k);● Disponibiliza um gerador de código;

Page 24: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

GreenDAO

● Framework open-source;● Facilita a comunicação com SQLite;● API simples;● Otimizado para Android;● Consumo mínimo de memória;● Biblioteca pequena (menos de 100k);● Disponibiliza um gerador de código;● Camera360 (+50.000.000), Pinterest (+10.000.000),

ICQ (+10.000.000), etc.

Page 25: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

public static void main(String[] args) throws Exception {

Schema schema = new Schema(1, "br.com.ricardolonga.todo");

Entity item = schema.addEntity("Item");

item.addIdProperty();

item.addStringProperty("title").notNull();

new DaoGenerator().generateAll(schema, "../todo/src-gen");

} DaoGenerator.java

Processing schema version 1...Written /home/longa/dev/workspace/todo/src-gen/br/com/ricardolonga/todo/ItemDao.javaWritten /home/longa/dev/workspace/todo/src-gen/br/com/ricardolonga/todo/Item.javaWritten /home/longa/dev/workspace/todo/src-gen/br/com/ricardolonga/todo/DaoMaster.javaWritten /home/longa/dev/workspace/todo/src-gen/br/com/ricardolonga/todo/DaoSession.javaProcessed 1 entities in 113ms

Resultado...

Page 26: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "todo", null);

SQLiteDatabase db = helper.getWritableDatabase();

DaoMaster daoMaster = new DaoMaster(db);

DaoSession daoSession = daoMaster.newSession();

ItemDao itemDao = daoSession.getItemDao();

Obtendo o ItemDao...

Item item = new Item(null, itemTitle);

itemDao.insert(item);

itemDao.deleteAll();

itemDao.deleteByKey(id);

Exemplos...

Page 27: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton
Page 28: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

Crouton

● Framework open-source;

Page 29: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

Crouton

● Framework open-source;● Context sensitive;

Page 30: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

Crouton

● Framework open-source;● Context sensitive;● Uma alternativa ao Toast (context insensitive);

Page 31: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

Toast.makeText(Activity, CharSequence, Duration).show();

Crouton.makeText(Activity, CharSequence, Style).show();

Page 32: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton
Page 33: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

EventBus

● Framework open-source;

Page 34: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

EventBus

● Framework open-source;● Publish/Subscribe model;

Page 35: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

EventBus

● Framework open-source;● Publish/Subscribe model;● Simplifica a comunicação entre

componentes (Activities, Fragments, BroadcastReceivers,

Threads, Services);

Page 36: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

EventBus

● Framework open-source;● Publish/Subscribe model;● Simplifica a comunicação entre

componentes (Activities, Fragments, BroadcastReceivers,

Threads, Services);● “Menos código, maior qualidade”.

Page 37: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

EventBus

● Framework open-source;● Publish/Subscribe model;● Simplifica a comunicação entre

componentes (Activities, Fragments, BroadcastReceivers,

Threads, Services);● “Menos código, maior qualidade”;● Camera360 (+50.000.000), Path (+10.000.000),

Pinterest (+10.000.000), etc.

Page 38: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

BroadcastReceiver

Activity

Page 39: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton
Page 40: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

AndroidAnnotations

● Framework open-source;

Page 41: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

AndroidAnnotations

● Framework open-source;● Simplifica a codificação (reduz boilerplate);

Page 42: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

AndroidAnnotations

● Framework open-source;● Simplifica a codificação (reduz boilerplate);● Facilita a manutenção;

Page 43: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

AndroidAnnotations

● Framework open-source;● Simplifica a codificação (reduz boilerplate);● Facilita a manutenção;● Permite a injeção de dependências (views,

resources, system services, etc);

Page 44: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

AndroidAnnotations

● Framework open-source;● Simplifica a codificação (reduz boilerplate);● Facilita a manutenção;● Permite a injeção de dependências (views,

resources, system services, etc);● Facilita o trabalho com threads;

Page 45: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

AndroidAnnotations

● Event binding, sem mais listeners anônimos;

Page 46: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

AndroidAnnotations

● Event binding, sem mais listeners anônimos;● Rest client através da criação de interfaces

(o framework irá implementar as interfaces);

Page 47: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

AndroidAnnotations

● Event binding, sem mais listeners anônimos;● Rest client através da criação de interfaces

(o framework irá implementar as interfaces);● Não impacta na performance em runtime;

Page 48: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

AndroidAnnotations

● Event binding, sem mais listeners anônimos;● Rest client através da criação de interfaces

(o framework irá implementar as interfaces);● Não impacta na performance em runtime;● Tudo isso com menos de 50kb;

Page 49: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

AndroidAnnotations

● Event binding, sem mais listeners anônimos;● Rest client através da criação de interfaces

(o framework irá implementar as interfaces);● Não impacta na performance em runtime;● Tudo isso com menos de 50kb;● Call of Duty (+1.000.000), Magic Piano by Smule

(+10.000.000), etc.

Page 50: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

ListView bookmarkList = (ListView) findViewById(R.id.bookmarkList);

Page 51: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

@ViewByIdListView bookmarkList;

ListView bookmarkList = (ListView) findViewById(R.id.bookmarkList);

Page 52: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

Button buttonOne = (Button) findViewById(R.id.updateBookmarksButton1);

buttonOne.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

updateBookmarksClicked();

}

});

Button buttonTwo = (Button) findViewById(R.id.updateBookmarksButton2);

buttonTwo.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

updateBookmarksClicked();

}

});

Page 53: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

@Click({R.id.updateBookmarksButton1, R.id.updateBookmarksButton2})

void updateBookmarksClicked() {

...

}

Button buttonOne = (Button) findViewById(R.id.updateBookmarksButton1);

buttonOne.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

updateBookmarksClicked();

}

});

Button buttonTwo = (Button) findViewById(R.id.updateBookmarksButton2);

buttonTwo.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

updateBookmarksClicked();

}

});

Page 54: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

void updateBookmarksClicked() {

new UpdateBookmarksTask().execute(search.getText().toString(), application.getUserId());

}

Page 55: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

void updateBookmarksClicked() {

new UpdateBookmarksTask().execute(search.getText().toString(), application.getUserId());

}

private static final String BOOKMARK_URL = "http://www.bookmarks.com/bookmarks/{userId}?search={search}";

Page 56: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

void updateBookmarksClicked() {

new UpdateBookmarksTask().execute(search.getText().toString(), application.getUserId());

}

private static final String BOOKMARK_URL = "http://www.bookmarks.com/bookmarks/{userId}?search={search}";

class UpdateBookmarksTask extends AsyncTask<String, Void, Bookmarks> {

}

Page 57: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

void updateBookmarksClicked() {

new UpdateBookmarksTask().execute(search.getText().toString(), application.getUserId());

}

private static final String BOOKMARK_URL = "http://www.bookmarks.com/bookmarks/{userId}?search={search}";

class UpdateBookmarksTask extends AsyncTask<String, Void, Bookmarks> {

protected Bookmarks doInBackground(String... params) {

// Cria o RestTemplate

// Cria o HttpEntity

// Invoca o método exchange

// Obtém e retorna o Bookmarks

}

}

Page 58: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

void updateBookmarksClicked() {

new UpdateBookmarksTask().execute(search.getText().toString(), application.getUserId());

}

private static final String BOOKMARK_URL = "http://www.bookmarks.com/bookmarks/{userId}?search={search}";

class UpdateBookmarksTask extends AsyncTask<String, Void, Bookmarks> {

protected Bookmarks doInBackground(String... params) {

// Cria o RestTemplate

// Cria o HttpEntity

// Invoca o método exchange

// Obtém e retorna o Bookmarks

}

protected void onPostExecute(Bookmarks result) {

// Atualiza a UI Thread

}

}

Page 59: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

void updateBookmarksClicked() {

new UpdateBookmarksTask().execute(search.getText().toString(), application.getUserId());

}

private static final String BOOKMARK_URL = "http://www.bookmarks.com/bookmarks/{userId}?search={search}";

class UpdateBookmarksTask extends AsyncTask<String, Void, Bookmarks> {

protected Bookmarks doInBackground(String... params) {

// Cria o RestTemplate

// Cria o HttpEntity

// Invoca o método exchange

// Obtém e retorna o Bookmarks

}

protected void onPostExecute(Bookmarks result) {

// Atualiza a UI Thread

}

} XyzActivity.java

Page 60: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

void updateBookmarksClicked() {

new UpdateBookmarksTask().execute(search.getText().toString(), application.getUserId());

}

private static final String BOOKMARK_URL = "http://www.bookmarks.com/bookmarks/{userId}?search={search}";

class UpdateBookmarksTask extends AsyncTask<String, Void, Bookmarks> {

protected Bookmarks doInBackground(String... params) {

// Cria o RestTemplate

// Cria o HttpEntity

// Invoca o método exchange

// Obtém e retorna o Bookmarks

}

protected void onPostExecute(Bookmarks result) {

// Atualiza a UI Thread

}

}XyzActivity.java

Inner class

Page 61: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

@Rest("http://www.bookmarks.com")

public interface BookmarkClient {

}

BookmarkClient.java

Page 62: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

@Rest("http://www.bookmarks.com")

public interface BookmarkClient {

@Get("/bookmarks/{userId}?search={search}")

Bookmarks getBookmarks(String search, String userId);

} BookmarkClient.java

Page 63: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

@Rest("http://www.bookmarks.com")

public interface BookmarkClient {

@Get("/bookmarks/{userId}?search={search}")

Bookmarks getBookmarks(String search, String userId);

} BookmarkClient.java

@RestService

BookmarkClient restClient;

XyzActivity.java

Page 64: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

@Rest("http://www.bookmarks.com")

public interface BookmarkClient {

@Get("/bookmarks/{userId}?search={search}")

Bookmarks getBookmarks(String search, String userId);

} BookmarkClient.java

@RestService

BookmarkClient restClient;

@Background

void searchAsync(String searchString, String userId) {

Bookmarks bookmarks = restClient.getBookmarks(searchString, userId);

updateBookmarks(bookmarks);

}

XyzActivity.java

Page 65: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton

@RestService

BookmarkClient restClient;

@Background

void searchAsync(String searchString, String userId) {

Bookmarks bookmarks = restClient.getBookmarks(searchString, userId);

updateBookmarks(bookmarks);

}

@UiThread

void updateBookmarks(Bookmarks bookmarks) {

// Atualiza a UI Thread

} XyzActivity.java

@Rest("http://www.bookmarks.com")

public interface BookmarkClient {

@Get("/bookmarks/{userId}?search={search}")

Bookmarks getBookmarks(String search, String userId);

} BookmarkClient.java

Page 66: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton
Page 67: Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton