Update task to TextView protocol

This commit is contained in:
Андрей II Лимасов 2024-11-14 08:08:21 +03:00
parent e9f21ae2ba
commit 6af06fa8c9
4 changed files with 57 additions and 43 deletions

View File

@ -7,22 +7,21 @@
Основные требования к приложению:
- Не изменяйте место и название файла `MainActivity` (но редактирование содержимого - можно и нужно)
- Для отслеживания используйте текстовые подсказки системного класса `Toast`
- Последовательность состояния жизненого цикла приложения должна выводиться в *TextView* (`@id/protocol`)
- Каждое состояние жизненного цикла выводится в отдельной строке
- Значения текстовых подсказок **должны быть определены** в строковых ресурсах `string.xml`
- Длительность показа задается константой `Toast.LENGTH_LONG`
- В качестве объекта `Context` используйте запускаемую активити
- Текстовые подсказки должны быть корректно выводится при смене конфигурации приложения (например, поворот экрана)
Название строковых ресурсов и их значения приведено в таблице 1.
| № | Отслеживаемый метод | Строковый ресурс | Значение ресурса |
| :-: | :-----------------: | :--------------: | :--------------: |
| :-: |:-------------------:| :--------------: | :--------------: |
| 1 | `onCreate` | `ncreate` | Activity CREATED |
| 2 | `onStart` | `nstart` | Activity STARTED |
| 3 | `onResume` | `nresume` | Activity RESUMED |
| 4 | | `npause` | Activity PAUSED |
| 5 | | `nstop` | Activity STOPPED |
| 6 | | `nrestart` | Activity RESTARTED |
| 4 | `onPase` | `npause` | Activity PAUSED |
| 5 | `onStop` | `nstop` | Activity STOPPED |
| 6 | `onRestart` | `nrestart` | Activity RESTARTED |
| 7 | `onDestroy` | `ndestroy` | Activity DESTROYED |
*Таблица 1. Настройки всплывающих подсказок*
@ -35,34 +34,18 @@
*Ожидаемый результат:*
Последовательно показаны текстовые подсказки:
*TextView* (`@id/protocol`) содержит три строки:
1. `onCreate`
2. `onStart`
3. `onResume`
Activity CREATED
**2. Поворот экрана**
Activity STARTED
*Входные данные:* приложение уже запущено. Выполняется поворот экрана.
*Ожидаемый результат:*
Последовательно показаны текстовые подсказки:
1. `onDestroy`
2. `onCreate`
3. `onStart`
4. `onResume`
![screenshot](/doc/screenshot.png)
*Пример интефрейса*
Activity RESUMED
![Пример оформления](/doc/screenshot.png)
| № | Название теста | Баллы | Описание |
| :-: | :-----------------: | :--------------: | :-------------- |
| 1 | checkPortait | 2 | Проверка последовательности Toast при запуске активности |
| 2 | checkLandscape | 4 | Проверка обработки поворотов экрана |
| 3 | checkStringRes | 1 | Проверка наличия строковых ресурсов |
*Таблица 2. Критерии оценивания и тесты*

View File

@ -1,20 +1,42 @@
package ru.myitschool.work;
import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.appcompat.app.AppCompatActivity;
import java.util.ArrayList;
import ru.myitschool.work.databinding.ActivityMainBinding;
public class MainActivity extends AppCompatActivity {
private ActivityMainBinding binding;
private ArrayList<String> protocol = new ArrayList<>();
void logLifecycleState(@StringRes int resourceId) {
String text = getString(resourceId);
protocol.add(text);
}
void showLog() {
StringBuilder s = new StringBuilder();
for (String state : protocol) {
s.append(state).append("\n");
}
binding.protocol.setText(s.toString());
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final ActivityMainBinding binding = ActivityMainBinding.inflate(getLayoutInflater());
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
Toast.makeText(this, R.string.ncreate, Toast.LENGTH_LONG).show();
binding.protocol.setMovementMethod(new ScrollingMovementMethod());
}
// Добавьте недостающие методы здесь

View File

@ -1,13 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Hello World!"/>
</FrameLayout>
android:id="@+id/protocol"
android:layout_width="0dp"
android:layout_height="0dp"
android:scrollbars="vertical"
android:text="Протокол\n"
android:textAlignment="center"
android:textSize="34sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 64 KiB