minicurso android

66
Android - 4h 100% Hands-on

Upload: mario-pereira

Post on 06-May-2015

1.215 views

Category:

Education


0 download

DESCRIPTION

Android Mini Curso Hands-on.

TRANSCRIPT

Page 1: Minicurso Android

Android - 4h 100% Hands-on

Page 2: Minicurso Android
Page 3: Minicurso Android

GOOGLE ANdroidMario Jorge Pereira

Page 4: Minicurso Android

2001

2002

2003

2004

2005

2006

2007

2008

2009

2010

2011

2012

2013

2014

2015

Page 5: Minicurso Android

Agenda

Setup (Ambiente e AVD’s)

Development

Alo Mundo (Hello World)

Lista Tarefas (ToDo List)

(Listar, Inserir, Excluir, Preferencias …)

Page 6: Minicurso Android
Page 7: Minicurso Android

Desenvolvimento

Page 8: Minicurso Android

Por onde começar?

http://developer.android.com

Page 9: Minicurso Android

ADT Bundle:

• Eclipse + ADT plugin

• Android SDK Tools

• Android Platform-tools

Pré requisito: JDK instalada

Page 10: Minicurso Android

Eclipse + ADT

Page 11: Minicurso Android

Android Virtual Device Manager

Page 12: Minicurso Android

Android Virtual Device AVD

Emulador

Page 13: Minicurso Android

Alô Mundo

File > New > Android Application Project

Page 14: Minicurso Android

Run As.. Android application

Page 15: Minicurso Android
Page 16: Minicurso Android

src/ (código fonte: .java)"

gen/ (código gerado: R.java )"

bin/ (bytecodes: .dex)"

libs/ (bibliotecas)"

res/ (recursos: layouts, strigs, icones …)"

assets/ (outros recursos: arquivos em geral)Es

trutu

ra

Page 17: Minicurso Android
Page 18: Minicurso Android

<?xml version="1.0" encoding="

utf-8"?>

<resources>! <string nam

e="app_name">Alo Mundo</string

>

<string name="action_setti

ngs">Settings</string>

<string name="hello_world"

>Hello world!</string>

!</resources>

strings.xml

Page 19: Minicurso Android

/* AUTO-GENERATED FILE. DO NO

T MODIFY.*/

public final class R {

public static final class

attr {

} public stat

ic final class dimen {

public static final int

activity_horizontal_margin=0x

7f040000;

public static final in

t activity_vertical_margin=0x7

f040001;

} public stati

c final class layout {

public static final in

t activity_main=0x7f030000;

} ...}

R.java

Page 20: Minicurso Android

public class MainActivity extends Activity {! @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }!! @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } }

MainActivity.java

Page 21: Minicurso Android

<?xml version="1.0" encoding=“

utf-8"?>

<manifest ...>

... <applicatio

n ... >

<activity

android:name="br.c

om.example.alomundo.MainActivi

ty"

android:label="@st

ring/app_name" >

<intent-filter>

<action androi

d:name="android.intent.action.

MAIN" />

<category andr

oid:name="android.intent.categ

ory.LAUNCHER" />

</intent-filter>

</activity>

</application>

</manifest>

AndroidManifest.xml

Page 22: Minicurso Android

ToDo br.mobileday.todo

File > New > Android Application Project

Page 23: Minicurso Android

Log.[nivel](“TAG”,“MENSAGEM”);

!

Log.v (Verbose)Log.d (Debug)Log.i (Info)Log.w (Warning)Log.e (Erro)Log.wtf(...)

Log

Page 24: Minicurso Android

<RelativeLayout ... >

... <Button android

:id="@+id/botao"

android:layout_width="

wrap_content"

android:layout_height=

"wrap_content"

android:layout_below="

@+id/textView1"

android:layout_centerH

orizontal="true"

android:text="Botao"

android:onClick="metod

o" />

...</RelativeLayou

t>

activity_main.xml

Page 25: Minicurso Android

public class MainActivity extends Activity {! @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } ... public void metodo(View v){ Log.i(“TAG”,"TEXTO"); }}

MainActivity.java

Page 26: Minicurso Android

Run As.. Android application

Page 27: Minicurso Android

Toast.makeText(this, "TEXTO", Toast.LENGTH_LONG).s

how();

!!Toast.LENGTH_LONG!Toast.LENGTH_SHORT!

TOAST

Page 28: Minicurso Android

public class MainActivity extends Activity {! @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } ... public void metodo(View v){ Toast.makeText(this, "ToDo!", Toast.LENGTH_LONG).show(); }}

MainActivity.java

Page 29: Minicurso Android

Run As.. Android application

Page 30: Minicurso Android

[Tipo] var = ([Tipo]) findViewById(R.id.[id]);

!var.metodo();!

findbyid

Page 31: Minicurso Android

public class MainActivity extends Activity {! @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } ... public void metodo(View v){ TextView tv = (TextView) findViewById(R.id.textView1); tv.setText("ToDO!"); }}

MainActivity.java

Page 32: Minicurso Android

Run As.. Android application

Page 33: Minicurso Android
Page 34: Minicurso Android

public class NovaActivity extends Activity {! @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_nova); }! @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.nova, menu); return true; }!}

NovaActivity.java

Page 35: Minicurso Android

<?xml version="1.0" encoding=“

utf-8"?>

<manifest ...>

... <applicatio

n ... >

... <activi

ty

android:name="br.m

obileday.todo.NovaActivity"

android:label="@st

ring/title_activity_nova" >

</activity>

</application>

</manifest>

AndroidManifest.xml

Page 36: Minicurso Android

public class MainActivity extends Activity {! @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } ... public void metodo(View v){ Intent intent = new Intent(this,NovaActivity.class); intent.putExtra("chave", "valor"); startActivity(intent); }}

MainActivity.java

Page 37: Minicurso Android

<RelativeLayout ... >

... <Button android

:id="@+id/botao"

android:layout_width="

wrap_content"

android:layout_height=

"wrap_content"

android:layout_below="

@+id/textView1"

android:layout_centerH

orizontal="true"

android:text="Voltar"

android:onClick="volta

r" />

...</RelativeLayou

t>

activity_nova.xml.java

Page 38: Minicurso Android

public class NovaActivity extends Activity {! @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_nova); Bundle extas = getIntent().getExtras(); TextView tv = (TextView) findViewById(R.id.textView1); tv.setText(extas.getString("chave")); } ... public void voltar(View v){ finish(); }}

NovaActivity.java

Page 39: Minicurso Android

Run As.. Android application

Page 40: Minicurso Android

<RelativeLayout ... >

<EditText android:id="@+id

/editText1"

android:layout_width="

fill_parent"

android:layout_height=

"wrap_content"

android:layout_alignPa

rentLeft="true"

android:layout_alignPa

rentRight="true"

android:layout_alignPa

rentTop="true"

android:hint="Nome Tar

efa"

android:inputType="tex

t"

android:ems="10" >

<requestFocus />

</EditText>

<Button android:id="@+id/b

utton1"

android:layout_width="

wrap_content"

android:layout_height=

"wrap_content"

android:layout_below="

@+id/editText1"

android:layout_centerH

orizontal="true"

android:onClick="salva

r"

android:text="Salvar"

/>

</RelativeLayout>

activity_nova.xml

Page 41: Minicurso Android

public class NovaActivity extends Activity {! private EditText text;! @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_nova); text = (EditText) findViewById(R.id.editText1); }! @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.nova, menu); return true; }! public void salvar(View v){ Intent dados = new Intent(); dados.putExtra("nome", text.getText().toString()); setResult(RESULT_OK,dados); finish(); } }

NovaActivity.java

Page 42: Minicurso Android

public class MainActivity extends Activity { ...! public void metodo(View v){ Intent intent = new Intent(this,NovaActivity.class); startActivityForResult(intent,9999); }! @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if(requestCode == 9999 && resultCode == RESULT_OK){ Toast.makeText(this, data.getStringExtra("nome"), Toast.LENGTH_LONG).show();

} }}

MainActivity.java

Page 43: Minicurso Android

Run As.. Android application

Page 44: Minicurso Android

<RelativeLayout ... >

... <ListView

android:id="@+id/listV

iew1"

android:layout_width="

match_parent"

android:layout_height=

"wrap_content"

android:layout_alignPa

rentBottom="true"

android:layout_alignPa

rentLeft="true"

android:layout_alignPa

rentRight="true"

android:layout_alignPa

rentTop="true" >

</ListView>

...</RelativeLayou

t>

activity_main.xml

Page 45: Minicurso Android

<menu xmlns:android="http://sc

hemas.android.com/apk/res/

android" >! <item android

:id="@+id/action_nova"

android:orderInCategor

y="100"

android:showAsAction="

never"

android:title="Nova Ta

refa"/>

!</menu>

main.xml

Page 46: Minicurso Android

public class MainActivity extends Activity { private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = (ListView) findViewById(R.id.listView1); String[] values = new String[]{"Acorda","MobileDay","Happy Hour"};

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,

android.R.layout.simple_list_item_1,values); listView.setAdapter(adapter); }! public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_nova: Intent intent = new Intent(this, NovaActivity.class);

startActivityForResult(intent, 9999);

return true; default: return super.onOptionsItemSelected(item); } } ...}

MainActivity.java

Page 47: Minicurso Android

Run As.. Android application

Page 48: Minicurso Android

public class MainActivity extends Activity { private ListView listView; private static ArrayList<String> values = new ArrayList<String>();

private ArrayAdapter<String> adapter;! @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = (ListView) findViewById(R.id.listView1); adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, values);

listView.setAdapter(adapter); }! @Override protected void onResume() { super.onResume(); adapter.notifyDataSetChanged(); } ...}

MainActivity.java

Page 49: Minicurso Android

public class MainActivity extends Activity { ... @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 9999 && resultCode == RESULT_OK) { String tarefa = data.getStringExtra("nome"); values.add(tarefa); } }!}

MainActivity.java

Page 50: Minicurso Android

Run As.. Android application

Page 51: Minicurso Android

public class MainActivity extends Activity { ... private SharedPreferences settings; @Override protected void onCreate(Bundle savedInstanceState) { ... settings = PreferenceManager.getDefaultSharedPreferences(this);

Editor editor = settings.edit(); editor.putString("ultimo", ""); editor.commit(); } ... @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (requestCode == 9999 && resultCode == RESULT_OK) { String tarefa = data.getStringExtra("nome"); values.add(tarefa); Editor editor = settings.edit(); editor.putString("ultimo", tarefa); editor.commit(); } }}

MainActivity.java

Page 52: Minicurso Android

public class NovaActivity extends Activity {! private EditText text;! protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_nova); text = (EditText) findViewById(R.id.editText1); SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);

String valor = settings.getString("ultimo", "Tarefa"); text.setText(valor); } ... }

NovaActivity.java

Page 53: Minicurso Android

Run As.. Android application

Page 54: Minicurso Android

<menu xmlns:android="http://sc

hemas.android.com/apk/

res/android" >

! <item android

:id="@+id/exibir"

android:orderInCategor

y="100"

android:showAsAction="

never"

android:title="Exibir"

/>

!</menu>

context_menu.xml

Page 55: Minicurso Android

public class MainActivity extends Activity { ... @Override protected void onCreate(Bundle savedInstanceState) { ... registerForContextMenu(listView); }! @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.context_menu, menu); } ...}

MainActivity.java

Page 56: Minicurso Android

public class MainActivity extends Activity { ... public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); switch (item.getItemId()) { case R.id.action_settings: String valor = (String) listView.getItemAtPosition(info.position); Toast.makeText(this,valor, Toast.LENGTH_LONG).show();

return true; default: return super.onContextItemSelected(item); } } ...}

MainActivity.java

Page 57: Minicurso Android

Run As.. Android application

Page 58: Minicurso Android

<menu xmlns:android="http://sc

hemas.android.com/apk/res/

android" >! <item android

:id="@+id/exibir"

android:orderInCategor

y="100"

android:showAsAction="

never"

android:title=“Exibir"

/>

<item android

:id="@+id/excluir"

android:orderInCategor

y="100"

android:showAsAction="

never"

android:title="Excluir

"/>

!</menu>

context_menu.xml

Page 59: Minicurso Android

public class MainActivity extends Activity { ... public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); switch (item.getItemId()) { case R.id.exibir: String valor = (String) listView.getItemAtPosition(info.position);

Toast.makeText(this,valor, Toast.LENGTH_LONG).show();

return true; case R.id.excluir: values.remove(info.position); adapter.notifyDataSetChanged(); return true; default: return super.onContextItemSelected(item); } ...}

MainActivity.java

Page 60: Minicurso Android

Run As.. Android application

Page 61: Minicurso Android

<menu xmlns:android="http://sc

hemas.android.com/apk/res/andr

oid" >

! <item android

:id="@+id/action_nova"

android:orderInCategor

y="100"

android:showAsAction="

never"

android:title="Nova Ta

refa"/>

<item

android:id="@+id/site"

android:orderInCategor

y="100"

android:showAsAction="

never"

android:title="Site"/>

</menu>

menu.xml

Page 62: Minicurso Android

public class MainActivity extends Activity { ... public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_nova: nova(); return true; case R.id.site: Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(

"http://www.google.com")); startActivity(intent); return true; default: return super.onOptionsItemSelected(item); } } ...}

MainActivity.java

Page 63: Minicurso Android

Run As.. Android application

Page 64: Minicurso Android
Page 65: Minicurso Android

Esta obra está licenciada sob a licença Creative Commons Atribuição-CompartilhaIgual 3.0 Não Adaptada. Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-sa/3.0/.

Page 66: Minicurso Android

ANDROIDMario Jorge Pereira

Como me encontrar? http://www.mariojp.com.br twitter.com/@mariojp [email protected]