Android: Další součásti GUI
Z MiS
(Rozdíly mezi verzemi)
(Osamostatnění stránky) |
(Upraven vzhled dokumentu - kompletně přepracována část okolo hlavního menu.) |
||
Řádka 16: | Řádka 16: | ||
***** @drawable/obrazek | ***** @drawable/obrazek | ||
****android:alphabeticShortcut="x" | ****android:alphabeticShortcut="x" | ||
− | + | ||
− | + | ||
− | + | === Hlavní menu === | |
− | + | ; Načtení z XML | |
− | * | + | * <code>public boolean onCreateOptionsMenu(Menu menu)</code> |
− | + | ** Definujeme v aktivitě, která má mít menu. | |
− | + | ||
− | ** | + | *MenuInflater |
− | + | ** Třída, která vytváří propojení s XML souborem. | |
− | + | ||
− | + | <div class="Priklad"> | |
− | + | public boolean onCreateOptionsMenu(Menu menu) { | |
− | + | MenuInflater inflater = getMenuInflater(); | |
− | + | inflater.inflate(R.menu.menu, menu); | |
− | + | return true; | |
− | + | } | |
− | + | </div> | |
− | + | ||
− | + | ; Dynamicky vytvořené z kódu: | |
− | + | *public boolean onCreateOptionsMenu(Menu menu) | |
− | * | + | *menu.add(int idSkupinyVoleb, int idVolby, int poradiVolbyVMenu, String textVolby) |
− | + | ||
− | + | <div class="Priklad"> | |
− | + | Příklad: | |
− | + | public boolean onCreateOptionsMenu(Menu menu) { | |
− | + | menu.add(1,1,0, "otevri"); | |
− | + | menu.add(1,2,1, "zavri"); | |
− | + | } | |
− | + | </div> | |
− | + | ||
− | + | * Obsluha | |
− | + | **public boolean onOptionsItemSelected(MenuItem item) | |
− | + | *** Spustí se při kliknutí na menu. | |
− | + | **item.getItemId() | |
− | + | *** switch (item.getItemId()) { | |
+ | *** case R.id.otevri: | ||
+ | *** ... | ||
+ | *** return true; | ||
+ | *** } | ||
+ | |||
+ | |||
+ | === Kontextové menu === | ||
+ | * registerForContextMenu(view) | ||
+ | ***Registrace komponenty (view) pro kontext. menu. | ||
+ | ***Příklad (kód aktivity): | ||
+ | **** public void onCreate(Bundle savedInstanceState) { | ||
+ | **** o | ||
****** super.onCreate(savedInstanceState); | ****** super.onCreate(savedInstanceState); | ||
− | + | ***** setContentView(R.layout.main); | |
− | + | ***** Button b = (Button) R.findViewById(R.id.tlacitko); | |
− | + | ***** registerForContextMenu(b); | |
− | + | * onCreateContextMenu() | |
− | + | ***public boolean onCreateContextMenu(ContextMenu menu, View v, contextMenuInfo menuInfo) { | |
− | + | ***o | |
− | + | **** super.onCreateContextMenu(menu, v, menuInfo); | |
− | + | **** if (v.getId()==R.id.tlacitko) { | |
− | + | **** o | |
− | + | ***** getMenuInflater().inflate(R.menu.kontextmenu, menu); | |
− | + | ***** } | |
− | + | **** } | |
− | + | * onContextItemSelected() | |
− | + | ***public boolean onContextItemSelected(MenuItem item) { | |
− | + | ***o | |
− | + | **** Button b = (Button) findViewById(R.id.tlacitko); | |
− | + | **** switch (item.getItemId()) { | |
− | + | **** o | |
− | + | ***** case R.id.modra: | |
− | + | ***** b.setBackgroundColor(Color.BLUE); | |
− | + | ***** return true; | |
− | + | ***** default: | |
− | + | ***** return super.onContextItemSelected(item); | |
− | + | ***** } | |
− | + | **** } | |
− | + | ||
− | + | === Vytvoření menu === | |
− | + | * Hlavní menu | |
− | + | ** Jednou při vytvoření aktivity. | |
− | + | * Kontextové menu | |
+ | ** Při každém vyvolání (podržením prstu na prvku). | ||
Aktuální verze z 19. 7. 2020, 10:20
Obsah |
Menu
- developer.android.com > Guide > Topics > Ui > Menus <http://developer.android.com/guide/topics/ui/menus.html>
- res/menu/menu.xml
- XML popis struktury menu.
- <menu>
- <item>
- android:id
- android:id="@+id/otevrit"
- android:title
- popiska
- Standardně nepárový tag.
- Obsahem elementu může být další element <menu> (podmenu).
- android:icon
- @drawable/obrazek
- android:alphabeticShortcut="x"
- android:id
- Načtení z XML
-
public boolean onCreateOptionsMenu(Menu menu)
- Definujeme v aktivitě, která má mít menu.
- MenuInflater
- Třída, která vytváří propojení s XML souborem.
public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu, menu); return true; }
- Dynamicky vytvořené z kódu
- public boolean onCreateOptionsMenu(Menu menu)
- menu.add(int idSkupinyVoleb, int idVolby, int poradiVolbyVMenu, String textVolby)
Příklad:
public boolean onCreateOptionsMenu(Menu menu) { menu.add(1,1,0, "otevri"); menu.add(1,2,1, "zavri"); }
- Obsluha
- public boolean onOptionsItemSelected(MenuItem item)
- Spustí se při kliknutí na menu.
- item.getItemId()
- switch (item.getItemId()) {
- case R.id.otevri:
- ...
- return true;
- }
- public boolean onOptionsItemSelected(MenuItem item)
- registerForContextMenu(view)
- Registrace komponenty (view) pro kontext. menu.
- Příklad (kód aktivity):
- public void onCreate(Bundle savedInstanceState) {
- o
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- Button b = (Button) R.findViewById(R.id.tlacitko);
- registerForContextMenu(b);
- onCreateContextMenu()
- public boolean onCreateContextMenu(ContextMenu menu, View v, contextMenuInfo menuInfo) {
- o
- super.onCreateContextMenu(menu, v, menuInfo);
- if (v.getId()==R.id.tlacitko) {
- o
- getMenuInflater().inflate(R.menu.kontextmenu, menu);
- }
- }
- onContextItemSelected()
- public boolean onContextItemSelected(MenuItem item) {
- o
- Button b = (Button) findViewById(R.id.tlacitko);
- switch (item.getItemId()) {
- o
- case R.id.modra:
- b.setBackgroundColor(Color.BLUE);
- return true;
- default:
- return super.onContextItemSelected(item);
- }
- }
- Hlavní menu
- Jednou při vytvoření aktivity.
- Kontextové menu
- Při každém vyvolání (podržením prstu na prvku).
Vyskakovací okna
- Toast
- Třída
- Bublina, která se objeví a zase zmizí.
- Metody
- setText(...)
- setDuration(konstantaDobyTrvani)
- makeText(Activity aktivita, String text, konstantaDobyTrvani)
- Vytvoří instanci.
- Konstanty: <#ID_1440998896>
- Toast.LENGTH_LONG
- Toast.LENGTH_SHORT
- show()
- Zobrazí bublinu!
- Konstanty doby trvání:
- Toast.LENGTH_LONG
- Toast.LENGTH_SHORT
- AlertDialog
- kritické události nebo potvrzení
- AlertDialog dialog = new AlertDialog(Neutral, "OK");
- Dialog.setText(text);
- Dialog.setTitle("Upozornění");
- Dialog.show();
- kritické události nebo potvrzení
- Builder
- umožňuje nastavit vlastnosti dialogu.
Přepínání obrazovek
=== Pojem aktivita
- Aktivita... jedna obrazovka aplikace.
- Je realizována třídou, která je potomkem třídy
android.app.Activity
.
Životní cyklus aktivity
- Metody
setContentView()
- Náhled obsahu.
onCreate()
- Volá se:
- Při spuštění aktivity.
- Pokud bylo málo paměti a komponenta ve stavu onPause() nebo onStop() byla uvolněna.
onStart()
- Následuje po:
-
onCreate()
-
onRestart()
-
onResume()
- Když se uživatel vrátí k obrazovce (ale byla předtím stále viditelná):
- Následuje po:
- onStart()
- onPause()
onPause()
- Uživatel se přepne do jiné aktivity
onStop()
- Aktivita již nebude viditelná.
onRestart()
- Aktivita byla znovu zviditelněna (předtím bylo okno skryto).
- Následuje tedy po:
- onStop()
onDestroy()
- Ukončení aktivity.
- Spuštění aktivity
Intent i = new Intent(this, novaAktivita.class); startActivity(i);
- Přidání aktivity do manifestu
<activity android:name="novaAktivita" />
Související stránky
- Android: Tvorba GUI... principy, propojování prvků, identifikace prvků, layout.
- Android: Jednoduché prvky GUI