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(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(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(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() } }