Minicurso Android
-
Upload
mario-pereira -
Category
Education
-
view
1.219 -
download
0
description
Transcript of Minicurso Android
Android - 4h 100% Hands-on
GOOGLE ANdroidMario Jorge Pereira
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
Agenda
Setup (Ambiente e AVD’s)
Development
Alo Mundo (Hello World)
Lista Tarefas (ToDo List)
(Listar, Inserir, Excluir, Preferencias …)
Desenvolvimento
Por onde começar?
http://developer.android.com
ADT Bundle:
• Eclipse + ADT plugin
• Android SDK Tools
• Android Platform-tools
Pré requisito: JDK instalada
Eclipse + ADT
Android Virtual Device Manager
Android Virtual Device AVD
Emulador
Alô Mundo
File > New > Android Application Project
Run As.. Android application
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
<?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
/* 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
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
<?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
ToDo br.mobileday.todo
File > New > Android Application Project
Log.[nivel](“TAG”,“MENSAGEM”);
!
Log.v (Verbose)Log.d (Debug)Log.i (Info)Log.w (Warning)Log.e (Erro)Log.wtf(...)
Log
<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
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
Run As.. Android application
Toast.makeText(this, "TEXTO", Toast.LENGTH_LONG).s
how();
!!Toast.LENGTH_LONG!Toast.LENGTH_SHORT!
TOAST
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
Run As.. Android application
[Tipo] var = ([Tipo]) findViewById(R.id.[id]);
!var.metodo();!
findbyid
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
Run As.. Android application
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
<?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
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
<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
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
Run As.. Android application
<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
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
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
Run As.. Android application
<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
<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
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
Run As.. Android application
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
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
Run As.. Android application
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
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
Run As.. Android application
<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
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
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
Run As.. Android application
<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
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
Run As.. Android application
<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
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
Run As.. Android application
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/.
ANDROIDMario Jorge Pereira
Como me encontrar? http://www.mariojp.com.br twitter.com/@mariojp [email protected]