177 lines
6.7 KiB
Kotlin
177 lines
6.7 KiB
Kotlin
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()
|
||
}
|
||
} |