Update task to TextView protocol
This commit is contained in:
parent
e9f21ae2ba
commit
6af06fa8c9
39
README.md
39
README.md
@ -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. Критерии оценивания и тесты*
|
@ -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());
|
||||
}
|
||||
|
||||
// Добавьте недостающие методы здесь
|
||||
|
@ -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 |
Loading…
x
Reference in New Issue
Block a user