6. Робота з меню Android
Первинні вкладки
1. Створіть новий проект в Android Studio.
2. Удаліть всі елементи з активного екрану. В папці res/menu відкрийте файл menu_main.xml (цей файл відповідає за пукти меню).
3. Скачайте зображення морського узбережжя та прапору України.
4. Додайте три пункти меню: Море, Україна та Відпочинок. Пункти додаються наступним чином:
1 2 3 4 5 | <item android:id="@+id/action_settings" //id пункту android:orderInCategory="100" // порядок в меню android:showAsAction="never" android:title="@string/action_settings"/> // текст у пункті меню |
Приклад menu_main.xml:
1 2 3 4 5 6 7 8 9 10 11 12 | <menu xmlns:android="<a href="http://schemas.android.com/apk/res/android"<br /> ">http://schemas.android.com/apk/res/android"<br /> </a> xmlns:app="<a href="http://schemas.android.com/apk/res-auto"<br /> ">http://schemas.android.com/apk/res-auto"<br /> </a> xmlns:tools="<a href="http://schemas.android.com/tools"">http://schemas.android.com/tools"</a> tools:context=".MainActivity"> <item android:id="@+id/vidpochinok" android:title="Відпочинок" android:orderInCategory="100" app:showAsAction="never" /> <item android:id="@+id/form" android:title="Форма" android:orderInCategory="99" app:showAsAction="never" /> <item android:id="@+id/Ukraine" android:title="Україна" android:orderInCategory="98" app:showAsAction="never" /> </menu> |
5. Перейдіть у ваш MainActivity.java. Знайдіть обробник вибору пунктів меню (onOptionsItemSelected(MenuItem item)). Як ви бачите, вибір здійснюється умовним оператором if. Замініть його на switch наступним чином:
1 2 3 | switch (id) { } } |
6. Допишіть у switch всі можливі варіанти вибору. Має вийти наступне:
1 2 3 4 5 6 7 8 9 10 11 12 | switch (id) { case R.id.Ukraine: return true; case R.id.vidpochinok: return true; case R.id.form: return true; } } |
7. Перейдіть на ваш активний екран. Додайте туди картинку, додайте форму привітання з попередніх робіт, а також текст. Зробіть всі елементи невидимими(visibility = invisible).
8. Оголосіть необхідні змінні та імпортуйте класи для роботи:
1 2 3 4 | public ImageView image1; // змінна для зображення public EditText namek; // текстового поля public Button hel; // кнопки public TextView txt; // відображуваного тексту |
9. Напишіть код обробки натискання кнопки:
1 2 3 4 5 6 | public void say(View view) { // метод txt = (TextView)findViewById(R.id.text); // пошук елементів namek = (EditText)findViewById(R.id.name); txt.setText("Hello, "+namek.getText().toString()); // конвертація тексту з // текстового поля у відображуваний текст } |
10. Допишіть коди обробки вибору пунктів меню:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); switch(id){ case R.id.vidpochinok: txt = (TextView)findViewById(R.id.text); // пошук елементів txt.setVisibility(View.VISIBLE); // встановлення видимості елемента image1 = (ImageView)findViewById(R.id.ukr); image1.setVisibility(View.VISIBLE); namek = (EditText)findViewById(R.id.name); namek.setVisibility(View.INVISIBLE); hel = (Button)findViewById(R.id.hello); hel.setVisibility(View.INVISIBLE); txt.setText("I'm gonna get to the SEA!"); // встановлення тексту image1.setImageDrawable(getResources().getDrawable(R.drawable.more)); // зміна зображення return true; case R.id.Ukraine: txt = (TextView)findViewById(R.id.text); txt.setVisibility(View.VISIBLE); hel = (Button)findViewById(R.id.hello); hel.setVisibility(View.INVISIBLE); namek = (EditText)findViewById(R.id.name); namek.setVisibility(View.INVISIBLE); image1 = (ImageView)findViewById(R.id.ukr); image1.setVisibility(View.VISIBLE); txt.setText("28.06.1996"); image1.setImageDrawable(getResources().getDrawable(R.drawable.ukraine)); return true; case R.id.form: txt = (TextView)findViewById(R.id.text); txt.setText(""); namek = (EditText)findViewById(R.id.name); namek.setVisibility(View.VISIBLE); hel = (Button)findViewById(R.id.hello); hel.setVisibility(View.VISIBLE); txt.setVisibility(View.VISIBLE); image1 = (ImageView)findViewById(R.id.ukr); image1.setVisibility(View.INVISIBLE); return true; } return super.onOptionsItemSelected(item); } |
11. Запустіть програму на виконання. Результати:
Контрольні питання:
1. Опишіть структуру файлу menu-main.xml.
2. Яка властивість відповідає за видимість компонентів і як її редагувати з коду програми?
3. Яким чином відбувається обробка вибору елементів меню?
4. Опишіть змінні, які ви використовували протягом цієї роботи.