feat: Добавить диалоговое окно "О приложении"

Реализует новый пункт меню "О приложении", который открывает диалоговое окно с информацией о программе.

- В `main_menu.xml` добавлен пункт "About".
- Создан макет `dialog_about.xml` для отображения информации.
- В `MainActivity` добавлена логика для показа диалога, включая динамическое получение версии приложения из `PackageInfo`.
- В `strings.xml` (для en и ru локалей) добавлены строки, содержащие описание, имя создателя и формат версии.
This commit is contained in:
2026-01-17 02:57:26 +03:00
parent 924d445c45
commit 6b65ec1bc4
5 changed files with 85 additions and 1 deletions

View File

@@ -1,13 +1,17 @@
package com.anabasis.vkchatmanager;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import androidx.activity.result.ActivityResultLauncher;
@@ -188,6 +192,11 @@ public class MainActivity extends AppCompatActivity {
return true;
}
if (id == R.id.action_about) {
showAboutDialog();
return true;
}
if (id == R.id.action_sign_out) {
TokenManager.clear(this);
recreate();
@@ -207,6 +216,30 @@ public class MainActivity extends AppCompatActivity {
/* ===================== UI ===================== */
private void showAboutDialog() {
View dialogView = LayoutInflater.from(this).inflate(R.layout.dialog_about, null);
TextView appNameVersion = dialogView.findViewById(R.id.app_name_version);
TextView appDescription = dialogView.findViewById(R.id.app_description);
TextView appCreator = dialogView.findViewById(R.id.app_creator);
try {
PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
String version = pInfo.versionName;
appNameVersion.setText(getString(R.string.app_name_version_format, getString(R.string.app_name), version));
} catch (PackageManager.NameNotFoundException e) {
appNameVersion.setText(getString(R.string.app_name));
}
appDescription.setText(R.string.about_description);
appCreator.setText(R.string.about_creator);
new MaterialAlertDialogBuilder(this)
.setView(dialogView)
.setPositiveButton(R.string.ok_button, null)
.show();
}
private void showTokenStatus() {
long exp = TokenManager.expiration(this);
String message;

View File

@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="24dp"
android:gravity="center_horizontal">
<ImageView
android:id="@+id/app_icon"
android:layout_width="72dp"
android:layout_height="72dp"
android:src="@mipmap/ic_launcher_round"
android:contentDescription="@string/app_name" />
<TextView
android:id="@+id/app_name_version"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:textAppearance="?attr/textAppearanceTitleLarge"
tools:text="VK Chat Manager v1.0" />
<TextView
android:id="@+id/app_description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:gravity="center"
android:textAppearance="?attr/textAppearanceBodyMedium" />
<TextView
android:id="@+id/app_creator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:textAppearance="?attr/textAppearanceBodySmall" />
</LinearLayout>

View File

@@ -15,6 +15,9 @@
<item
android:id="@+id/action_token_status"
android:title="@string/action_token_status" />
<item
android:id="@+id/action_about"
android:title="@string/action_about" />
<item
android:id="@+id/action_sign_out"
android:title="@string/action_sign_out" />

View File

@@ -42,5 +42,9 @@
<string name="op_failure_format">❌ %1$s в %2$s: %3$s</string>
<string name="action_sign_out">Выйти</string>
<string name="api_error">Ошибка API: %s</string>
<string name="action_about">О приложении</string>
<string name="token_expired_message">Ваша сессия истекла. Пожалуйста, войдите снова.</string>
<string name="app_name_version_format">%1$s v%2$s</string>
<string name="about_description">Это приложение предназначено для управления чатами ВКонтакте.</string>
<string name="about_creator">Создатель: Александр Денисов</string>
</resources>

View File

@@ -42,5 +42,9 @@
<string name="op_failure_format">❌ %1$s in %2$s: %3$s</string>
<string name="action_sign_out">Sign Out</string>
<string name="api_error">API error: %s</string>
<string name="action_about">About</string>
<string name="token_expired_message">Your session has expired. Please log in again.</string>
<string name="app_name_version_format">%1$s v%2$s</string>
<string name="about_description">This application is designed for managing VK chats.</string>
<string name="about_creator">Created by: Alex Denisov</string>
</resources>