Top Banner
Desenvolvendo para Android com componentes Open Source Por Adriel Café [email protected] http://github.com/ adrielcafe http://pt.slideshare.net/adrielcafe http ://facebook.com/adrielcafe
51

Desenvolvendo para Android com componentes Open Source

Jul 18, 2015

Download

Software

Adriel Café
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Desenvolvendo para Android com componentes Open Source

Desenvolvendo para

Android com componentes

Open SourcePor Adriel Café

[email protected]

http://github.com/adrielcafe

http://pt.slideshare.net/adrielcafe

http://facebook.com/adrielcafe

Page 2: Desenvolvendo para Android com componentes Open Source

ANTES DE COMEÇAR...

http://bit.do/s-task

Page 3: Desenvolvendo para Android com componentes Open Source

Agenda

Introdução rápida ao Android

Views: nativas x open source

Banco de Dados: nativo x open source

O que vamos desenvolver?

Let’s code!

Page 4: Desenvolvendo para Android com componentes Open Source

Introdução Rápida ao

Android

Page 5: Desenvolvendo para Android com componentes Open Source

O que é o Android?

Sistema operacional para dispositivos móveis

Desenvolvido pelo Google

Baseado no Linux

Open Source

http://source.android.com

Primeiro smartphone Android foi lançado em 2008

Page 6: Desenvolvendo para Android com componentes Open Source

Versões do Android

Page 7: Desenvolvendo para Android com componentes Open Source

O Que Preciso Para

Desenvolver?

Linguagens

Java

XML

SQL

Ferramentas

Android Studio

Android SDK

http://developer.android.com/sdk

Page 8: Desenvolvendo para Android com componentes Open Source

Views Nativas

Page 9: Desenvolvendo para Android com componentes Open Source

Views: Nativas x Open Source

Page 10: Desenvolvendo para Android com componentes Open Source

Button

Nativo AlternativosFlatButtonhttps://github.com/hoang8f/android-flat-button

CircleButtonhttps://github.com/markushi/android-circlebutton

Page 11: Desenvolvendo para Android com componentes Open Source

Button

Nativo AlternativosCircularProgressButtonhttps://github.com/dmytrodanylyk/circular-progress-button

ProcessButtonhttps://github.com/dmytrodanylyk/android-process-button

Page 12: Desenvolvendo para Android com componentes Open Source

RadioButton

Nativo AlternativosNoCircleRadioButtonhttps://github.com/Euphrates-Media/No-Circle-Radio-Button

SegmentedControlhttps://github.com/hoang8f/android-segmented-control

Page 13: Desenvolvendo para Android com componentes Open Source

Switch

Nativo AlternativosCoolSwitchhttps://github.com/Serchinastico/CoolSwitch

SwitchButtonhttps://github.com/kyleduo/SwitchButton

Page 14: Desenvolvendo para Android com componentes Open Source

ProgressBar

Nativo AlternativosSmoothProgressBarhttps://github.com/castorflex/SmoothProgressBar

RoundCornerProgressBarhttps://github.com/akexorcist/Android-RoundCornerProgressBar

Page 15: Desenvolvendo para Android com componentes Open Source

ProgressBar

Nativo AlternativosNumberProgressBarhttps://github.com/daimajia/NumberProgressBar

RoundCornerProgressBarhttps://github.com/akexorcist/Android-RoundCornerProgressBar

Page 16: Desenvolvendo para Android com componentes Open Source

SeekBar

Nativo AlternativosDiscreteSeekBarhttps://github.com/AnderWeb/discreteSeekBar

VerticalSeekBarhttps://github.com/h6ah4i/android-verticalseekbar

Page 17: Desenvolvendo para Android com componentes Open Source

Dialog

Nativo AlternativosL-Dialogshttps://github.com/lewisjdeane/L-Dialogs

Material Dialogshttps://github.com/afollestad/material-dialogs

Page 18: Desenvolvendo para Android com componentes Open Source

Dialog

Nativo AlternativosNiftyDialogEffectshttps://github.com/sd6352051/NiftyDialogEffects

Page 19: Desenvolvendo para Android com componentes Open Source

Dialog

Nativo AlternativosSweet Alerthttps://github.com/pedant/sweet-alert-dialog

Page 20: Desenvolvendo para Android com componentes Open Source

Dialog

Nativo AlternativosDialogPlushttps://github.com/orhanobut/dialogplus

Page 21: Desenvolvendo para Android com componentes Open Source

ListView

Nativo AlternativosFlabbyListViewhttps://github.com/jpardogo/FlabbyListView

Page 22: Desenvolvendo para Android com componentes Open Source

ListView

Nativo AlternativosSwipeMenuListViewhttps://github.com/baoyongzhang/SwipeMenuListView

Page 23: Desenvolvendo para Android com componentes Open Source

ListView

Nativo AlternativosYoutubeListViewhttps://github.com/Laimiux/android-youtube-listview

Page 24: Desenvolvendo para Android com componentes Open Source

Menu

Nativo AlternativosContextMenuhttps://github.com/Yalantis/Context-Menu.Android

Page 25: Desenvolvendo para Android com componentes Open Source

Menu

Nativo AlternativosSideMenuhttps://github.com/Yalantis/Side-Menu.Android

Page 26: Desenvolvendo para Android com componentes Open Source

Pull to Refresh

Nativo AlternativosNão tem SwipyRefreshLayout

https://github.com/OrangeGangsters/SwipyRefreshLayout

Page 27: Desenvolvendo para Android com componentes Open Source

Pull to Refresh

Nativo AlternativosNão tem Phoenix Pull-to-Refresh

https://github.com/Yalantis/Phoenix

Page 28: Desenvolvendo para Android com componentes Open Source

Banco de Dados: Nativo x Open Source

Page 29: Desenvolvendo para Android com componentes Open Source

Banco de Dados:Biblioteca Nativa

Criando uma tabela CRUDdb.execSQL(“CREATE TABLE IF NOT EXISTS Category (

id INTEGER PRIMARY KEY, name TEXT

);”);

// Selectdb.execSQL(“SELECT * FROM Category;");

// Insertdb.execSQL("INSERT INTO CategoryValues (‘xyz’);");

// Updatedb.execSQL(“UPDATE Category SET name = “abc” WHERE id = 1;");

// Deletedb.execSQL(“DELETE FROM CategoryWHERE id = 1;");

Page 30: Desenvolvendo para Android com componentes Open Source

Banco de Dados:ActiveAndroid

Criando uma tabela CRUD@Table(name = "Categories")public class Category extends Model {

@Column(name = "Name")public String name;

}

// Selectnew Select()

.from(Category.class)

.execute();

// Insert & Updatecategory.save();

// Deletecategory.delete();

https://github.com/pardom/ActiveAndroid

Page 31: Desenvolvendo para Android com componentes Open Source

Banco de Dados:Sugar ORM

Criando uma tabela CRUD

https://github.com/satyan/sugar

public class Category extendsSugarRecord<Category> {

public String name;}

// SelectSelect

.from(Category.class)

.list();

// Insert & Updatecategory.save();

// Deletecategory.delete();

Page 32: Desenvolvendo para Android com componentes Open Source

O Que Vamos Desenvolver?

Page 33: Desenvolvendo para Android com componentes Open Source

Lista de Tarefas

Wunderlist Evernote Any.DO

Page 34: Desenvolvendo para Android com componentes Open Source

Lista de Tarefas

TodoistGoogle Keep J.Todo

Page 35: Desenvolvendo para Android com componentes Open Source

Vamos desenvolver o

S-Task!

Page 36: Desenvolvendo para Android com componentes Open Source

S-Task

Page 37: Desenvolvendo para Android com componentes Open Source

S-Task

Google Play

http://play.google.com/store/apps/details?id=com.

adrielcafe.stask

GitHub

http://github.com/adrielcafe/S-Task

Page 38: Desenvolvendo para Android com componentes Open Source

S-Task

Iremos usar os seguintes componentes open source:

Sugar ORM

http://github.com/satyan/sugar

NiftyDialogEffects

http://github.com/sd6352051/NiftyDialogEffects

AndroidSwipeLayout

http://github.com/daimajia/AndroidSwipeLayout

FloatingActionButton

http://github.com/makovkastar/FloatingActionButton

FloatingLabelWidgets

http://github.com/marvinlabs/android-floatinglabel-widgets

Page 39: Desenvolvendo para Android com componentes Open Source

Let’s Code!

Page 40: Desenvolvendo para Android com componentes Open Source

1º - Configurar o Projeto

1. Baixar o projeto

http://bit.do/s-task

2. Abrir no Android Studio

Page 41: Desenvolvendo para Android com componentes Open Source

2º - Entender o Projeto

AndroidManifest.xmlContém a declaração das Activities

TasksActivityActivity da tela principal, exibe a lista de tarefas

TaskEditActivityActivity da tela de criação e edição das tarefas

TaskAdapterAdapter responsável por criar as linhas da lista

TaskModelo que representa uma tarefa e a tabela no banco de dados

res/layout/Contém as interfaces gráficas das Activities

build.gradle (Module: app)Arquivo de configuração do aplicativo

Page 42: Desenvolvendo para Android com componentes Open Source

3º - Configurar app/build.gradle

apply plugin: 'com.android.application'

android {compileSdkVersion 22buildToolsVersion "22.0.1"...

}

dependencies {compile fileTree(dir: 'libs', include: ['*.jar'])compile 'com.android.support:appcompat-v7:22.0.0'compile 'com.nineoldandroids:library:2.4.0'compile 'com.github.satyan:sugar:1.3.1@aar'compile

'com.github.sd6352051.niftydialogeffects:niftydialogeffects:1.0.0'compile "com.daimajia.swipelayout:library:1.2.0@aar"compile 'com.melnykov:floatingactionbutton:1.3.0@aar'compile 'com.marvinlabs:android-floatinglabel-widgets:1.6.1@aar'

}

Page 43: Desenvolvendo para Android com componentes Open Source

4º - Criar ListView em

activity_tasks.xml

<ListViewandroid:id="@android:id/list"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@color/white"android:divider="@color/accent"android:dividerHeight="0.25dp"/>

Page 44: Desenvolvendo para Android com componentes Open Source

5º - Implementar

FloatingActionButton em

activity_tasks.xml

<com.melnykov.fab.FloatingActionButtonandroid:id="@+id/fab"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="bottom|right"android:layout_margin="16dp"android:src="@drawable/ic_add"app:fab_colorNormal="@color/primary” />

Page 45: Desenvolvendo para Android com componentes Open Source

6º - Implementar

FloatingLabelEditText em

activity_task_edit.xml

<com.marvinlabs.widget.floatinglabel.edittext.FloatingLabelEditText

android:id="@+id/title"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_margin="10dp"app:flw_inputWidgetTextSize="22sp"app:flw_labelTextSize="18sp"app:flw_labelText="@string/title" />

Page 46: Desenvolvendo para Android com componentes Open Source

7º - Implementar Sugar ORM

Task TasksActivity

private void saveTask(){task.title = “...";task.description = “...";task.save();

}

private void loadTasks(){tasks = Select

.from(Task.class)

.orderBy("id DESC")

.list();}

public void deleteTask(Task task){task.delete();tasks.remove(task);tasksAdapter.notifyDataSetChanged();

}

public class Task extends SugarRecord<Task> {public String title;public String description;public boolean done;

public Task(){

}}

TaskEditActivity

Page 47: Desenvolvendo para Android com componentes Open Source

8º - Implementar TaskAdapter e

SwipeLayout em TasksActivity

private void loadTasks(){...if(!tasks.isEmpty()){

tasksAdapter = new TaskAdapter(this, tasks);tasksList.setAdapter(tasksAdapter);

}}

public void toggleTaskStatus(Task task, ViewstatusView){

if(task.done){task.done = false;statusView.setBackgroundColor(getResources()

.getColor(R.color.gray));} else {

task.done = true;statusView.setBackgroundColor(getResources()

.getColor(R.color.accent));}task.save();

}

Page 48: Desenvolvendo para Android com componentes Open Source

9º - Implementar NiftyDialog em

TasksActivity

public void showTask(final Task task){final NiftyDialogBuilder dialog =

NiftyDialogBuilder.getInstance(this);dialog.withTitle(task.title)

.withMessage(task.description)

.withDialogColor(getResources().getColor(R.color.primary))

.withEffect(Effectstype.SlideBottom)

.withDuration(300)

.withButton1Text(getString(R.string.close)).setButton1Click(new

View.OnClickListener() {@Overridepublic void onClick(View v) {

dialog.hide();}

}).show();

}

Page 49: Desenvolvendo para Android com componentes Open Source

Desafio

Implementar novas funcionalidades:

Categorias

Lembrar

Anexos

...

http://github.com/adrielcafe/S-Task

Page 50: Desenvolvendo para Android com componentes Open Source

Links

Views open source

https://android-arsenal.com/free

Banco de Dados ORM

https://android-arsenal.com/tag/69

Gerador de Ícones

http://romannurik.github.io/AndroidAssetStudio

Gerador de Cores

http://materialpalette.com

Page 51: Desenvolvendo para Android com componentes Open Source

Obrigado!

Adriel Café

[email protected]

http://github.com/adrielcafe

http://pt.slideshare.net/adrielcafe

http://facebook.com/adrielcafe