2025-06-06 16:23:30 +03:00

177 lines
6.7 KiB
Kotlin
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.example.admin
import android.app.Activity
import android.graphics.Color
import android.view.Gravity
import android.view.LayoutInflater
import android.widget.TextView
import android.widget.Toast
import com.example.rehabilitation.R
import com.example.rehabilitation.databinding.CustomToastBinding
/**
* Расширение для класса Toast, добавляющее возможность отображения пользовательских уведомлений
* с кастомным дизайном и анимацией
*/
fun Toast.showCustomInfoToast(message: String, activity: Activity) {
// Создание кастомного layout для Toast
val layout = LayoutInflater.from(activity).inflate(R.layout.custom_toast, null)
// Настройка текста сообщения
val text = layout.findViewById<TextView>(R.id.text)
text.text = message
// Настройка параметров Toast
this.apply {
setGravity(Gravity.BOTTOM or Gravity.CENTER_HORIZONTAL, 0, 100)
duration = Toast.LENGTH_LONG
view = layout
}
// Отображение Toast
show()
}
/**
* Расширение для класса Toast, добавляющее возможность отображения уведомлений об ошибках
* с красным фоном
*/
fun Toast.showErrorToast(message: String, activity: Activity) {
// Создание кастомного layout для Toast
val layout = LayoutInflater.from(activity).inflate(R.layout.custom_toast, null)
// Настройка текста сообщения
val text = layout.findViewById<TextView>(R.id.text)
text.text = message
text.setTextColor(Color.WHITE)
// Установка красного фона
layout.setBackgroundColor(Color.RED)
// Настройка параметров Toast
this.apply {
setGravity(Gravity.BOTTOM or Gravity.CENTER_HORIZONTAL, 0, 100)
duration = Toast.LENGTH_LONG
view = layout
}
// Отображение Toast
show()
}
/**
* Расширение для класса Toast, добавляющее возможность отображения уведомлений об успехе
* с зеленым фоном
*/
fun Toast.showSuccessToast(message: String, activity: Activity) {
// Создание кастомного layout для Toast
val layout = LayoutInflater.from(activity).inflate(R.layout.custom_toast, null)
// Настройка текста сообщения
val text = layout.findViewById<TextView>(R.id.text)
text.text = message
text.setTextColor(Color.WHITE)
// Установка зеленого фона
layout.setBackgroundColor(Color.GREEN)
// Настройка параметров Toast
this.apply {
setGravity(Gravity.BOTTOM or Gravity.CENTER_HORIZONTAL, 0, 100)
duration = Toast.LENGTH_LONG
view = layout
}
// Отображение Toast
show()
}
/**
* Объект для отображения кастомных уведомлений
* Расширяет стандартный Toast для отображения уведомлений с анимацией
*/
object Toast {
/**
* Отображение информационного уведомления
* @param context Контекст приложения
* @param message Текст уведомления
*/
fun showCustomInfoToast(context: Context, message: String) {
// Создание и настройка уведомления
val toast = Toast(context)
val binding = CustomToastBinding.inflate(context.layoutInflater)
// Настройка внешнего вида
binding.root.setBackgroundResource(R.drawable.bg_info_toast)
binding.ivIcon.setImageResource(R.drawable.ic_info)
binding.tvMessage.text = message
// Настройка параметров отображения
toast.setGravity(Gravity.BOTTOM or Gravity.CENTER_HORIZONTAL, 0, 100)
toast.duration = Toast.LENGTH_LONG
toast.view = binding.root
// Добавление анимации
toast.view?.alpha = 0f
toast.view?.animate()?.alpha(1f)?.setDuration(300)?.start()
// Отображение уведомления
toast.show()
}
/**
* Отображение уведомления об ошибке
* @param context Контекст приложения
* @param message Текст уведомления
*/
fun showErrorToast(context: Context, message: String) {
// Создание и настройка уведомления
val toast = Toast(context)
val binding = CustomToastBinding.inflate(context.layoutInflater)
// Настройка внешнего вида
binding.root.setBackgroundResource(R.drawable.bg_error_toast)
binding.ivIcon.setImageResource(R.drawable.ic_error)
binding.tvMessage.text = message
// Настройка параметров отображения
toast.setGravity(Gravity.BOTTOM or Gravity.CENTER_HORIZONTAL, 0, 100)
toast.duration = Toast.LENGTH_LONG
toast.view = binding.root
// Добавление анимации
toast.view?.alpha = 0f
toast.view?.animate()?.alpha(1f)?.setDuration(300)?.start()
// Отображение уведомления
toast.show()
}
/**
* Отображение уведомления об успешном выполнении
* @param context Контекст приложения
* @param message Текст уведомления
*/
fun showSuccessToast(context: Context, message: String) {
// Создание и настройка уведомления
val toast = Toast(context)
val binding = CustomToastBinding.inflate(context.layoutInflater)
// Настройка внешнего вида
binding.root.setBackgroundResource(R.drawable.bg_success_toast)
binding.ivIcon.setImageResource(R.drawable.ic_success)
binding.tvMessage.text = message
// Настройка параметров отображения
toast.setGravity(Gravity.BOTTOM or Gravity.CENTER_HORIZONTAL, 0, 100)
toast.duration = Toast.LENGTH_LONG
toast.view = binding.root
// Добавление анимации
toast.view?.alpha = 0f
toast.view?.animate()?.alpha(1f)?.setDuration(300)?.start()
// Отображение уведомления
toast.show()
}
}