SlideShare a Scribd company logo
Android Nálevna – začínáme s Androidem
Praha, 8. listopadu 2010
Pavel Petřek
CTO
Android Nálevna
2 z 34
Kdo je kdo
Pavel Petřek
Vývojář, entusiasta přes chytré
telefony, přednášející
Inmite
Vývoj pro chytré telefony
(Android: Corkbin, OnTheRoad, SMS
jízdenka, DMS a další)
Chytré webové aplikace na Google APIs
Android
Full-stack
Android Nálevna
3 z 34
aDevCamp
Co: Android konference
Kdy: Jaro 2011
Kde: v Praze
sledujte: twitter.com/aDevCamp
Android Nálevna
4 z 34
Agenda
Úvod
Nástroje vývoje aneb jak na„Hello Android“
Stavební kameny aplikací na Androidu
Ovládání aplikace
Jak si složit UI
Pár poznámek k Integraci
DEMO
Otázky
Android Nálevna
5 z 34
Jak na vývoj
JDK 5 / 6
Eclipse 3.4+
ADT plugin
http://developer.android.com/
→ →SDK Installing
Stáhnout„Android SDK“ z
http://developer.android.com/ →
→SDK Download
PATH=%PATH%;C:ASDKtools
'SDK Manager.exe' (stáhnout
balíčky)
Vytvořit virtual device
Android Nálevna
6 z 34
<Demo />
Hello, Android
Android Nálevna
7 z 34
Agenda
Úvod
Nástroje vývoje aneb jak na„Hello Android“
Stavební kameny aplikací na Androidu
Ovládání aplikace
Jak si složit UI
Pár poznámek k integraci
DEMO
Otázky
Android Nálevna
8 z 34
Čím se budeme zabývat
Android Nálevna
9 z 34
Čím se budeme zabývat
Android Nálevna
10 z 34
Stavební kameny vývoje Android aplikací
APK – jar s pevnou podstrukturou s AndroidManifest.xml
Komponenty – sdílejí zdroje, databáze, procesy, ...
Activities - komponenty UI odpovídající jednomu formuláři / obrazovce
Services - služba bez interakce (UI) běžící na pozadí
Content providers - cesta jak sdílet data ven z aplikace
Broadcast Intent Receivers - naslouchadlo vzkazů z vnějšku (i zevnitř)
Každá komponenta má systémem řízený životní cyklus (managed lifecycle)
Slovní spojení„ukončení aplikace“ vývojáře v základu nezajímá
Android Nálevna
11 z 34
Stavební kameny vývoje Android aplikací 2
Intent (komunikační balíček) + Intent filtry
Intent intent = new Intent(Intent.ACTION_VIEW, "http://www.youtube.com/");
startActivity(intent);
Přehrát Sdílet
Android Nálevna
12 z 34
API – co a jak
Android API nepokrývá zcela Java SE 5.0 API
Volitelné fičury
Location-Based Services
Media APIs
3D Graphics s OpenGL ES
a další
Manažery pro přístup k fičurám
activity, window, content, resource,
location, notification, telephone, ...
LocationManager lm = (LocationManager)
Context.getSystemService(Context.LOCATION_SERVICE);
Android Nálevna
13 z 34
Agenda
Úvod
Nástroje vývoje aneb jak na„Hello Android“
Stavební kameny aplikací na Androidu
Ovládání aplikace
Jak si složit UI
Pár poznámek k integraci
DEMO
Otázky
Android Nálevna
14 z 34
Životní cyklus aktivity
public class MyTestActivity extends Activity
{
@Override
public void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
protected void onResume() {
super.onStart();
// Napr. pust naslouchani GPS
}
@Override
protected void onPause() {
super.onPause();
// Napr. zastav GPS
}
}
Android Nálevna
15 z 34
Uživatelské menu
Klávesa MENU na každém zařízení s Androidem
public class MyTestActivity extends Activity {
public static final int MENU_BROWSER = 1;
// ... more stuff ...
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, MENU_BROWSER, 0, "Browser");
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
if (item.getItemId() == MENU_BROWSER) {
// Do something....
}
return super.onMenuItemSelected(featureId, item);
}
}
Android Nálevna
16 z 34
Dlouhý dotyk
Pro vyvolání extra menu na položkách použijete dlouhý dotyk
public class MyTestActivity extends Activity {
@Override
public void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
// init view
Button button =
(Button) findViewById(
R.id.btn_button1);
button.setLongClickable(true);
button.setOnLongClickListener(new
View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// Do something
return true;
}
});
}
}
Android Nálevna
17 z 34
Neobtěžujte uživatele dialogy
Pro jednoduché sdělení používejte Toasty
public class ContactActivity extends Activity {
// a lot of stuff here
public void saveDone() {
Toast.makeText(this,
"Contact created",
Toast.LENGTH_SHORT).show();
}
}
Android Nálevna
18 z 34
Neobtěžujte uživatele dialogy
Pro jednoduché sdělení používejte Toasty
public class ContactActivity extends Activity {
// a lot of stuff here
public void saveDone() {
Toast.makeText(this,
"Contact created",
Toast.LENGTH_SHORT).show();
}
}
Android Nálevna
19 z 34
Agenda
Úvod
Nástroje vývoje aneb jak na„Hello Android“
Stavební kameny aplikací na Androidu
Ovládání aplikace
Jak si složit UI
Pár poznámek k integraci
DEMO
Otázky
Android Nálevna
20 z 34
Views – co máme v základu?
Layouty
RelativeLayout, LinearLayout, ...
UI komponenty
TextView, CheckBox, Spinner, Date/Time
picker, Button, RadioButton, ListView, ...
Themes
styles-set pro aplikaci
9-patch image resource
Android Nálevna
21 z 34
Views - komplexní komponenty
Android Nálevna
22 z 34
9-patch – roztahování povoleno
demo.9.png
Android Nálevna
23 z 34
Návrh UI aplikace
Android Nálevna
24 z 34
Návrh UI aplikace
public class MyTestActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initUI();
}
private void initUI() {
LinearLayout ll = new LinearLayout(this);
ll.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.FILL_PARENT));
TextView tv = new TextView(this);
tv.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
tv.setText("Toto je muj text");
tv.setTextColor(Color.YELLOW);
ll.addView(tv);
setContentView(ll);
}
}
Android Nálevna
25 z 34
Různé konfigurace pro různé pohledy
Android Nálevna
26 z 34
Agenda
Úvod
Nástroje vývoje aneb jak na„Hello Android“
Stavební kameny aplikací na Androidu
Ovládání aplikace
Jak si složit UI
Pár poznámek k integraci
DEMO
Otázky
Android Nálevna
27 z 34
Jeden balíček pro všechny telefony
Konfigurace podoby, chování, jazyka, adres serverů,
defaultních míst na mapě, aj. v aplikaci ?
Odpověď je suffix v názvu adresáře konfigurace
Skládá se layout-vlastnost1-vlastnost2 (např. layout-lang-cs-
320x480)
Android Nálevna
28 z 34
Dobrá rada na závěr - používejte již hotové aplikace
Intenty + hotové dostupné aplikace = mocná zbraň
Dvě oblasti využití
Interní aplikace – vždy dostupné
Externí aplikace – nutno testovat dostupnost, případně
nabídnout instalaci
if (isIntentAvailable("com.google.SCAN")) {
Intent intent = new Intent("com.google.SCAN");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(intent, 0);
} else {
Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse("market://search?q=pname:com.google.scan"));
startActivity(intent);
}
}
// more stuff
public static boolean isIntentAvailable(String action) {
List list = context.getPackageManager()
.queryIntentActivities(new Intent(action),
PackageManager.MATCH_DEFAULT_ONLY);
return list.size() > 0;
}
Android Nálevna
29 z 34
Agenda
Úvod
Nástroje vývoje aneb jak na„Hello Android“
Stavební kameny aplikací na Androidu
Ovládání aplikace
Jak si složit UI
Pár poznámek k integraci
DEMO
Otázky
Android Nálevna
30 z 34
<Demo />
„Hello, Android“
nestačí?
Android Nálevna
31 z 34
Zdroje
http://www.android.com/
http://groups.google.com/
http://www.androidsnippets.org/
http://www.stackoverflow.com/
http://www.svetandroida.cz/
http://www.google.com/
Android Nálevna
32 z 34
Agenda
Úvod
Nástroje vývoje aneb jak na„Hello Android“
Stavební kameny aplikací na Androidu
Ovládání aplikace
Jak si složit UI
Pár poznámek k integraci
DEMO
Otázky
Android Nálevna
33 z 34
Otázky?
Inzerce: Jste nadšený(-á) programátor(-ka) s nohama na zemi? Vyvíjíte pro
chytré telefony (Android, iPhone, ...) a chce se naučit ještě více? Ozvěte
se nám na chci.job@inmite.eu, hledáme schopné mozky!
Android Nálevna
34 z 34
Děkuji za Váš čas
Pavel Petřek
pavel@inmite.eu http://www.inmite.eu/ http://twitter.com/pavelpetrek
a nezapomeňte: aDevCamp
v Praze již na jaře 2011
twitter.com/aDevCamp

More Related Content

PPT
Android - vývoj, distribuce a propagace
PPTX
5 Files Io
PPTX
Java Web Start
PPTX
PHP presentation
PDF
Google I/O 2013 - Android Graphics Performance
PDF
3 idle mode
PDF
WordCamp 2010: Twenty Ten barrierefrei?
PDF
Programování pro Android - úvod, FI MUNI, 2013
Android - vývoj, distribuce a propagace
5 Files Io
Java Web Start
PHP presentation
Google I/O 2013 - Android Graphics Performance
3 idle mode
WordCamp 2010: Twenty Ten barrierefrei?
Programování pro Android - úvod, FI MUNI, 2013

Similar to Android nálevna (Czech / Android for beginners) (17)

PDF
Android Development for Phone and Tablet
ODP
Jan Kaštánek - Od webových aplikací k Androidu
PDF
Závěrečný úkol KPI
PDF
Nechte zmizet své GUI, aneb proč nekopírovat iPhone UI na Androidu
PDF
Užitečné Android knihovny pro vývoj a testování
PDF
Stylování ActionBaru
PPTX
Strasti a slasti vývoje wp7 aplikací
PDF
Závěrečný úkol KPI
PDF
Design android-aplikaci-z-pohledu-programatora
KEY
mDevCamp - Android a práce na pozadí
PDF
Vojtěch Mádr: Xamarin od A až do Z
PPTX
PhoneGap Školení #1
PDF
Zaverecny ukol
PDF
Pohled na mobilní bankovní aplikace shora
PDF
Daniel Steigerwald: Jak psát mobilní webové aplikace
PDF
Bp Halíček leden
PPTX
TNPW2-2016-07
Android Development for Phone and Tablet
Jan Kaštánek - Od webových aplikací k Androidu
Závěrečný úkol KPI
Nechte zmizet své GUI, aneb proč nekopírovat iPhone UI na Androidu
Užitečné Android knihovny pro vývoj a testování
Stylování ActionBaru
Strasti a slasti vývoje wp7 aplikací
Závěrečný úkol KPI
Design android-aplikaci-z-pohledu-programatora
mDevCamp - Android a práce na pozadí
Vojtěch Mádr: Xamarin od A až do Z
PhoneGap Školení #1
Zaverecny ukol
Pohled na mobilní bankovní aplikace shora
Daniel Steigerwald: Jak psát mobilní webové aplikace
Bp Halíček leden
TNPW2-2016-07
Ad

Android nálevna (Czech / Android for beginners)

  • 1. Android Nálevna – začínáme s Androidem Praha, 8. listopadu 2010 Pavel Petřek CTO
  • 2. Android Nálevna 2 z 34 Kdo je kdo Pavel Petřek Vývojář, entusiasta přes chytré telefony, přednášející Inmite Vývoj pro chytré telefony (Android: Corkbin, OnTheRoad, SMS jízdenka, DMS a další) Chytré webové aplikace na Google APIs Android Full-stack
  • 3. Android Nálevna 3 z 34 aDevCamp Co: Android konference Kdy: Jaro 2011 Kde: v Praze sledujte: twitter.com/aDevCamp
  • 4. Android Nálevna 4 z 34 Agenda Úvod Nástroje vývoje aneb jak na„Hello Android“ Stavební kameny aplikací na Androidu Ovládání aplikace Jak si složit UI Pár poznámek k Integraci DEMO Otázky
  • 5. Android Nálevna 5 z 34 Jak na vývoj JDK 5 / 6 Eclipse 3.4+ ADT plugin http://developer.android.com/ → →SDK Installing Stáhnout„Android SDK“ z http://developer.android.com/ → →SDK Download PATH=%PATH%;C:ASDKtools 'SDK Manager.exe' (stáhnout balíčky) Vytvořit virtual device
  • 6. Android Nálevna 6 z 34 <Demo /> Hello, Android
  • 7. Android Nálevna 7 z 34 Agenda Úvod Nástroje vývoje aneb jak na„Hello Android“ Stavební kameny aplikací na Androidu Ovládání aplikace Jak si složit UI Pár poznámek k integraci DEMO Otázky
  • 8. Android Nálevna 8 z 34 Čím se budeme zabývat
  • 9. Android Nálevna 9 z 34 Čím se budeme zabývat
  • 10. Android Nálevna 10 z 34 Stavební kameny vývoje Android aplikací APK – jar s pevnou podstrukturou s AndroidManifest.xml Komponenty – sdílejí zdroje, databáze, procesy, ... Activities - komponenty UI odpovídající jednomu formuláři / obrazovce Services - služba bez interakce (UI) běžící na pozadí Content providers - cesta jak sdílet data ven z aplikace Broadcast Intent Receivers - naslouchadlo vzkazů z vnějšku (i zevnitř) Každá komponenta má systémem řízený životní cyklus (managed lifecycle) Slovní spojení„ukončení aplikace“ vývojáře v základu nezajímá
  • 11. Android Nálevna 11 z 34 Stavební kameny vývoje Android aplikací 2 Intent (komunikační balíček) + Intent filtry Intent intent = new Intent(Intent.ACTION_VIEW, "http://www.youtube.com/"); startActivity(intent); Přehrát Sdílet
  • 12. Android Nálevna 12 z 34 API – co a jak Android API nepokrývá zcela Java SE 5.0 API Volitelné fičury Location-Based Services Media APIs 3D Graphics s OpenGL ES a další Manažery pro přístup k fičurám activity, window, content, resource, location, notification, telephone, ... LocationManager lm = (LocationManager) Context.getSystemService(Context.LOCATION_SERVICE);
  • 13. Android Nálevna 13 z 34 Agenda Úvod Nástroje vývoje aneb jak na„Hello Android“ Stavební kameny aplikací na Androidu Ovládání aplikace Jak si složit UI Pár poznámek k integraci DEMO Otázky
  • 14. Android Nálevna 14 z 34 Životní cyklus aktivity public class MyTestActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } @Override protected void onResume() { super.onStart(); // Napr. pust naslouchani GPS } @Override protected void onPause() { super.onPause(); // Napr. zastav GPS } }
  • 15. Android Nálevna 15 z 34 Uživatelské menu Klávesa MENU na každém zařízení s Androidem public class MyTestActivity extends Activity { public static final int MENU_BROWSER = 1; // ... more stuff ... @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, MENU_BROWSER, 0, "Browser"); return super.onCreateOptionsMenu(menu); } @Override public boolean onMenuItemSelected(int featureId, MenuItem item) { if (item.getItemId() == MENU_BROWSER) { // Do something.... } return super.onMenuItemSelected(featureId, item); } }
  • 16. Android Nálevna 16 z 34 Dlouhý dotyk Pro vyvolání extra menu na položkách použijete dlouhý dotyk public class MyTestActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // init view Button button = (Button) findViewById( R.id.btn_button1); button.setLongClickable(true); button.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { // Do something return true; } }); } }
  • 17. Android Nálevna 17 z 34 Neobtěžujte uživatele dialogy Pro jednoduché sdělení používejte Toasty public class ContactActivity extends Activity { // a lot of stuff here public void saveDone() { Toast.makeText(this, "Contact created", Toast.LENGTH_SHORT).show(); } }
  • 18. Android Nálevna 18 z 34 Neobtěžujte uživatele dialogy Pro jednoduché sdělení používejte Toasty public class ContactActivity extends Activity { // a lot of stuff here public void saveDone() { Toast.makeText(this, "Contact created", Toast.LENGTH_SHORT).show(); } }
  • 19. Android Nálevna 19 z 34 Agenda Úvod Nástroje vývoje aneb jak na„Hello Android“ Stavební kameny aplikací na Androidu Ovládání aplikace Jak si složit UI Pár poznámek k integraci DEMO Otázky
  • 20. Android Nálevna 20 z 34 Views – co máme v základu? Layouty RelativeLayout, LinearLayout, ... UI komponenty TextView, CheckBox, Spinner, Date/Time picker, Button, RadioButton, ListView, ... Themes styles-set pro aplikaci 9-patch image resource
  • 21. Android Nálevna 21 z 34 Views - komplexní komponenty
  • 22. Android Nálevna 22 z 34 9-patch – roztahování povoleno demo.9.png
  • 23. Android Nálevna 23 z 34 Návrh UI aplikace
  • 24. Android Nálevna 24 z 34 Návrh UI aplikace public class MyTestActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); initUI(); } private void initUI() { LinearLayout ll = new LinearLayout(this); ll.setLayoutParams(new ViewGroup.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT)); TextView tv = new TextView(this); tv.setLayoutParams(new ViewGroup.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); tv.setText("Toto je muj text"); tv.setTextColor(Color.YELLOW); ll.addView(tv); setContentView(ll); } }
  • 25. Android Nálevna 25 z 34 Různé konfigurace pro různé pohledy
  • 26. Android Nálevna 26 z 34 Agenda Úvod Nástroje vývoje aneb jak na„Hello Android“ Stavební kameny aplikací na Androidu Ovládání aplikace Jak si složit UI Pár poznámek k integraci DEMO Otázky
  • 27. Android Nálevna 27 z 34 Jeden balíček pro všechny telefony Konfigurace podoby, chování, jazyka, adres serverů, defaultních míst na mapě, aj. v aplikaci ? Odpověď je suffix v názvu adresáře konfigurace Skládá se layout-vlastnost1-vlastnost2 (např. layout-lang-cs- 320x480)
  • 28. Android Nálevna 28 z 34 Dobrá rada na závěr - používejte již hotové aplikace Intenty + hotové dostupné aplikace = mocná zbraň Dvě oblasti využití Interní aplikace – vždy dostupné Externí aplikace – nutno testovat dostupnost, případně nabídnout instalaci if (isIntentAvailable("com.google.SCAN")) { Intent intent = new Intent("com.google.SCAN"); intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); startActivityForResult(intent, 0); } else { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=pname:com.google.scan")); startActivity(intent); } } // more stuff public static boolean isIntentAvailable(String action) { List list = context.getPackageManager() .queryIntentActivities(new Intent(action), PackageManager.MATCH_DEFAULT_ONLY); return list.size() > 0; }
  • 29. Android Nálevna 29 z 34 Agenda Úvod Nástroje vývoje aneb jak na„Hello Android“ Stavební kameny aplikací na Androidu Ovládání aplikace Jak si složit UI Pár poznámek k integraci DEMO Otázky
  • 30. Android Nálevna 30 z 34 <Demo /> „Hello, Android“ nestačí?
  • 31. Android Nálevna 31 z 34 Zdroje http://www.android.com/ http://groups.google.com/ http://www.androidsnippets.org/ http://www.stackoverflow.com/ http://www.svetandroida.cz/ http://www.google.com/
  • 32. Android Nálevna 32 z 34 Agenda Úvod Nástroje vývoje aneb jak na„Hello Android“ Stavební kameny aplikací na Androidu Ovládání aplikace Jak si složit UI Pár poznámek k integraci DEMO Otázky
  • 33. Android Nálevna 33 z 34 Otázky? Inzerce: Jste nadšený(-á) programátor(-ka) s nohama na zemi? Vyvíjíte pro chytré telefony (Android, iPhone, ...) a chce se naučit ještě více? Ozvěte se nám na chci.job@inmite.eu, hledáme schopné mozky!
  • 34. Android Nálevna 34 z 34 Děkuji za Váš čas Pavel Petřek pavel@inmite.eu http://www.inmite.eu/ http://twitter.com/pavelpetrek a nezapomeňte: aDevCamp v Praze již na jaře 2011 twitter.com/aDevCamp