Compare commits

...

4 Commits
main ... main

Author SHA1 Message Date
Емцова Надежда
41389dad90 Готовые формы 2025-05-04 20:52:14 +03:00
Емцова Надежда
7e82560aac Итоговые формы 2025-05-04 20:23:23 +03:00
Емцова Надежда
56d127fd3f Готовые формы и переходы между формами 2025-05-04 17:45:08 +03:00
5ebe213205 Merge pull request 'Создание 2 формы' (#2) from stud159646/Timer:main into main
Reviewed-on: stud179277/Timer#2
2025-05-03 17:25:48 +00:00
15 changed files with 597 additions and 195 deletions

View File

@ -12,6 +12,9 @@
android:supportsRtl="true"
android:theme="@style/Theme.TimerT"
tools:targetApi="31">
<activity
android:name=".History"
android:exported="false" />
<activity
android:name=".SettingsActivity"
android:exported="false" />
@ -21,6 +24,12 @@
<activity
android:name=".timer"
android:exported="false" />
<activity
android:name=".AllTraining"
android:exported="true" />
<activity
android:name=".AddWorkout"
android:exported="true" />
<activity
android:name=".MainActivity"
android:exported="true">

View File

@ -4,6 +4,8 @@ import android.app.AlertDialog
import android.content.Intent
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.ImageView
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
@ -53,5 +55,46 @@ class AddWorkout : AppCompatActivity() {
val intent = Intent(this, CreatingTraining::class.java)
startActivity(intent)
}
val timeInputRestSetAll: EditText = findViewById(R.id.rest_sets_all)
val btnPlusTimeAll: ImageView = findViewById(R.id.add_res_set2)
val btnMinusTimeAll: ImageView = findViewById(R.id.del_res_set2)
val setsInputAll: EditText = findViewById(R.id.numbers_of_sets_all)
val btnPlusSetsAll: ImageView = findViewById(R.id.add_set3)
val btnMinusSetsAll: ImageView = findViewById(R.id.del_set3)
val timeInputRest: EditText = findViewById(R.id.rest_workout_all)
val btnPlusTimeWor: ImageView = findViewById(R.id.add_res)
val btnMinusTimeWor: ImageView = findViewById(R.id.del_res)
val timeWork: EditText = findViewById(R.id.time_work_all)
val Plus: ImageView = findViewById(R.id.add_set)
val Minus: ImageView = findViewById(R.id.del_set)
setupPlusMinus(timeInputRestSetAll, btnPlusTimeAll, btnMinusTimeAll, minValue = 5, maxValue = 600)
setupPlusMinus(setsInputAll, btnPlusSetsAll, btnMinusSetsAll, minValue = 1, maxValue = 20)
setupPlusMinus(timeInputRest, btnPlusTimeWor, btnMinusTimeWor, minValue = 5, maxValue = 600)
setupPlusMinus(timeWork, Plus, Minus, minValue = 5, maxValue = 600)
}
fun setupPlusMinus(
editText: EditText,
plus: ImageView,
minus: ImageView,
minValue: Int = 5,
maxValue: Int = 600
) {
plus.setOnClickListener {
val current = editText.text.toString().toIntOrNull() ?: minValue
val newValue = (current + 1).coerceAtMost(maxValue)
editText.setText(newValue.toString())
}
minus.setOnClickListener {
val current = editText.text.toString().toIntOrNull() ?: minValue
val newValue = (current - 1).coerceAtLeast(minValue)
editText.setText(newValue.toString())
}
}
}

View File

@ -4,6 +4,8 @@ import android.app.AlertDialog
import android.content.Intent
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.ImageView
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
@ -23,11 +25,12 @@ class AllTraining : AppCompatActivity() {
}
val buttonSaveAll: Button = findViewById(R.id.btn_save_all_vse)
buttonSaveAll.setOnClickListener {
val intent = Intent(this, MainActivity::class.java)
val intent = Intent(this, CreatingTraining::class.java)
startActivity(intent)
isSave = true
}
val button_on_main_all: Button = findViewById(R.id.btn_on_main_all_vse)
button_on_main_all.setOnClickListener {
if (isSave == false) {
@ -48,5 +51,35 @@ class AllTraining : AppCompatActivity() {
startActivity(intent)
}
}
val timeInputRest: EditText = findViewById(R.id.rest_workout)
val btnPlusTime: ImageView = findViewById(R.id.add_res)
val btnMinusTime: ImageView = findViewById(R.id.del_res)
val setsInput: EditText = findViewById(R.id.time_work)
val btnPlusSets: ImageView = findViewById(R.id.add_set)
val btnMinusSets: ImageView = findViewById(R.id.del_set)
setupPlusMinus(timeInputRest, btnPlusTime, btnMinusTime, minValue = 5, maxValue = 600)
setupPlusMinus(setsInput, btnPlusSets, btnMinusSets, minValue = 5, maxValue = 600)
}
fun setupPlusMinus(
editText: EditText,
plus: ImageView,
minus: ImageView,
minValue: Int = 5,
maxValue: Int = 600
) {
plus.setOnClickListener {
val current = editText.text.toString().toIntOrNull() ?: minValue
val newValue = (current + 1).coerceAtMost(maxValue)
editText.setText(newValue.toString())
}
minus.setOnClickListener {
val current = editText.text.toString().toIntOrNull() ?: minValue
val newValue = (current - 1).coerceAtLeast(minValue)
editText.setText(newValue.toString())
}
}
}

View File

@ -4,7 +4,9 @@ import android.app.AlertDialog
import android.content.Intent
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.ImageButton
import android.widget.ImageView
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
@ -25,8 +27,20 @@ class CreatingTraining : AppCompatActivity() {
buttonSave.setOnClickListener {
isSave=true
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
}
val timeInputRest: EditText = findViewById(R.id.rest_sets)
val btnPlusTime: ImageView = findViewById(R.id.add_res)
val btnMinusTime: ImageView = findViewById(R.id.del_res)
val setsInput: EditText = findViewById(R.id.numbers_of_sets)
val btnPlusSets: ImageView = findViewById(R.id.add_set)
val btnMinusSets: ImageView = findViewById(R.id.del_set)
setupPlusMinus(timeInputRest, btnPlusTime, btnMinusTime, minValue = 5, maxValue = 600)
setupPlusMinus(setsInput, btnPlusSets, btnMinusSets, minValue = 1, maxValue = 20)
val button_on_main: Button = findViewById(R.id.btn_on_main)
button_on_main.setOnClickListener {
if(isSave==false){
@ -48,6 +62,30 @@ class CreatingTraining : AppCompatActivity() {
}
}
val button_add: Button = findViewById(R.id.add_workout)
button_add.setOnClickListener {
val intent = Intent(this, AllTraining::class.java)
startActivity(intent)
}
}
fun setupPlusMinus(
editText: EditText,
plus: ImageView,
minus: ImageView,
minValue: Int = 5,
maxValue: Int = 600
) {
plus.setOnClickListener {
val current = editText.text.toString().toIntOrNull() ?: minValue
val newValue = (current + 1).coerceAtMost(maxValue)
editText.setText(newValue.toString())
}
minus.setOnClickListener {
val current = editText.text.toString().toIntOrNull() ?: minValue
val newValue = (current - 1).coerceAtLeast(minValue)
editText.setText(newValue.toString())
}
}
}

View File

@ -0,0 +1,27 @@
package com.example.timert
import android.content.Intent
import android.os.Bundle
import android.widget.Button
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
class History : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContentView(R.layout.activity_history)
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}
val button_on_main: Button = findViewById(R.id.btn_on_main)
button_on_main.setOnClickListener {
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
}
}
}

View File

@ -2,6 +2,7 @@ package com.example.timert
import android.content.Intent
import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.Toast
import androidx.activity.enableEdgeToEdge
@ -31,18 +32,31 @@ class MainActivity : AppCompatActivity() {
startTrainingButton.setOnClickListener {
Toast.makeText(this, "Запуск тренировки!", Toast.LENGTH_SHORT).show() // Заглушка
//TODO: Intent для запуска Activity тренировки (форма 5)
val intent = Intent(this, timer::class.java)
startActivity(intent)
}
val templatesButton: Button = findViewById(R.id.templatesButton)
templatesButton.setOnClickListener {
Toast.makeText(this, "Открытие шаблонов!", Toast.LENGTH_SHORT).show() // Заглушка
//Toast.makeText(this, "Открытие шаблонов!", Toast.LENGTH_SHORT).show() // Заглушка
//TODO: Intent для открытия Activity шаблонов (форма 3)
val intent = Intent(this, AddWorkout::class.java)
startActivity(intent)
}
val newTemplateButton: Button = findViewById(R.id.newTemplateButton)
newTemplateButton.setOnClickListener {
Toast.makeText(this, "Создание нового шаблона!", Toast.LENGTH_SHORT).show() // Заглушка
//TODO: Intent для открытия Activity создания шаблона (форма 3)
//Toast.makeText(this, "Создание нового шаблона!", Toast.LENGTH_SHORT).show() // Заглушка
//TODO: Intent для открытия Activity создания шаблона (форма 7)
val intent = Intent(this, History::class.java)
startActivity(intent)
}
val exits: Button = findViewById(R.id.btn_exit)
exits.setOnClickListener {
finish()
}
}
}

View File

@ -1,6 +1,7 @@
package com.example.timert
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Bundle
import android.widget.Switch
@ -16,61 +17,17 @@ class SettingsActivity : AppCompatActivity() {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_settings2)
val versionTextView: TextView = findViewById(R.id.versionTextView)
val darkModeSwitch: Switch = findViewById(R.id.darkModeSwitch)
val aboutButton: Button = findViewById(R.id.aboutButton)
val developersButton: Button = findViewById(R.id.developersButton)
// Получаем сохраненное состояние темы из SharedPreferences
val sharedPreferences = getSharedPreferences("AppSettings", Context.MODE_PRIVATE)
val isDarkMode = sharedPreferences.getBoolean("DarkMode", false) // По умолчанию - светлая тема
darkModeSwitch.isChecked = isDarkMode
// Применяем тему
if (isDarkMode) {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
} else {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
}
try {
val packageInfo = packageManager.getPackageInfo(packageName, 0)
val versionName = packageInfo.versionName
versionTextView.text = "Версия: $versionName"
} catch (e: PackageManager.NameNotFoundException) {
versionTextView.text = "Версия: Неизвестно"
}
// Устанавливаем слушатель для Switch
darkModeSwitch.setOnCheckedChangeListener { _, isChecked ->
// Сохраняем состояние темы в SharedPreferences
val editor = sharedPreferences.edit()
editor.putBoolean("DarkMode", isChecked)
editor.apply()
// Применяем тему
if (isChecked) {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
} else {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
}
}
// Обработчик нажатия на кнопку "О программе"
aboutButton.setOnClickListener {
AlertDialog.Builder(this)
.setTitle("О программе")
.setMessage("Краткое описание пользования приложением.\n\nНапример: Это приложение позволяет тренироваться, чтобы быть как арнольдшварцнигер 😄")
.setPositiveButton("ОК", null)
.show()
}
// Обработчик нажатия на кнопку "Разработчики"
developersButton.setOnClickListener {
AlertDialog.Builder(this)
.setTitle("Разработчики")
.setMessage(HtmlCompat.fromHtml(
"<p style='margin-left: 2em;'><b>Вятский государственный университет</b></p><br>" +
"<p style='margin-left: 2em;'><b>Программу разработали:</b></p><br>" +
"<p style='margin-left: 2em;'>Емцова Надежда Александровна</p>" +
"<p style='margin-left: 2em;'>Новиков Николай Алексеевич</p>" +
"<p style='margin-left: 2em;'>Пискун Алёна Викторовна</p>",
@ -79,5 +36,10 @@ class SettingsActivity : AppCompatActivity() {
.setPositiveButton("ОК", null)
.show()
}
val on_main: Button = findViewById(R.id.btn_on_main)
on_main.setOnClickListener {
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
}
}
}
}

View File

@ -4,15 +4,30 @@ import android.app.AlertDialog
import android.content.Intent
import android.media.Image
import android.os.Bundle
import android.os.CountDownTimer
import android.widget.Button
import android.widget.ImageButton
import android.widget.TextView
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
class timer : AppCompatActivity() {
private var isPlay = false
private lateinit var statusText: TextView
private lateinit var timerText: TextView
private lateinit var statusSet: TextView
private lateinit var statusExercise: TextView
private var numApproaches = 3
private var numExercises = 5
private var restBetweenExercises = 30
private var restBetweenApproaches = 60
private var exerciseDuration = 45 // например, 45 секунд упражнение
private var currentTimer: CountDownTimer? = null
private var timeLeftInMillis: Long = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
@ -22,6 +37,18 @@ class timer : AppCompatActivity() {
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}
statusText = findViewById(R.id.statusText)
timerText = findViewById(R.id.timerText)
statusSet = findViewById(R.id.number_set)
statusExercise = findViewById(R.id.num_exercise)
numApproaches = intent.getIntExtra("numApproaches", numApproaches)
numExercises = intent.getIntExtra("numExercises", numExercises)
restBetweenExercises = intent.getIntExtra("restBetweenExercises", restBetweenExercises)
restBetweenApproaches = intent.getIntExtra("restBetweenApproaches", restBetweenApproaches)
exerciseDuration = intent.getIntExtra("exerciseDuration", exerciseDuration)
startTraining()
val button: ImageButton = findViewById(R.id.stop)
button.setOnClickListener {
AlertDialog.Builder(this)
@ -58,5 +85,90 @@ class timer : AppCompatActivity() {
}
private fun resumeTimer(onFinish: () -> Unit) {
currentTimer = object : CountDownTimer(timeLeftInMillis, 1000) {
override fun onTick(millisUntilFinished: Long) {
timeLeftInMillis = millisUntilFinished
timerText.text = "${millisUntilFinished / 1000}"
}
override fun onFinish() {
onFinish()
}
}.start()
}
private fun startTraining() {
var currentApproach = 1
val rootLayout = findViewById<ConstraintLayout>(R.id.main)
fun nextApproach() {
if (currentApproach > numApproaches) {
statusText.text = "Тренировка завершена!"
rootLayout.setBackgroundResource(R.drawable.blue_gradient)
timerText.text = "00:00"
return
}
var currentExercise = 1
fun nextExercise() {
if (currentExercise > numExercises) {
statusText.text = "Отдых между подходами"
rootLayout.setBackgroundResource(R.drawable.green_gradient)
startRest(restBetweenApproaches) {
currentApproach++
nextApproach()
}
return
}
rootLayout.setBackgroundResource(R.drawable.gradient_pink)
statusText.text="Работа"
statusExercise.text = "$currentExercise / $numExercises"
statusSet.text="$currentApproach"
startTimer(exerciseDuration) {
statusText.text = "Отдых"
rootLayout.setBackgroundResource(R.drawable.green_gradient)
startRest(restBetweenExercises) {
currentExercise++
nextExercise()
}
}
}
nextExercise()
}
nextApproach()
}
private fun startTimer(seconds: Int, onFinish: () -> Unit) {
timeLeftInMillis = seconds * 1000L
object : CountDownTimer(seconds * 1000L, 1000) {
override fun onTick(millisUntilFinished: Long) {
timerText.text = "${millisUntilFinished / 1000}"
}
override fun onFinish() {
onFinish()
}
}.start()
}
private fun startRest(seconds: Int, onFinish: () -> Unit) {
val rootLayout = findViewById<ConstraintLayout>(R.id.main)
rootLayout.setBackgroundResource(R.drawable.green_gradient)
object : CountDownTimer(seconds * 1000L, 1000) {
override fun onTick(millisUntilFinished: Long) {
timerText.text = "${millisUntilFinished / 1000}"
statusText.text = "Отдых"
}
override fun onFinish() {
onFinish()
}
}.start()
}
}

View File

@ -63,22 +63,27 @@
android:id="@+id/del_set3"
android:layout_width="wrap_content"
android:layout_height="37dp"
android:layout_gravity="center"
android:layout_weight="1"
app:srcCompat="@drawable/ic_remove_24px" />
<TextView
android:id="@+id/numbers_of_sets_all3"
android:layout_width="wrap_content"
android:layout_height="38dp"
<EditText
android:id="@+id/numbers_of_sets_all"
android:layout_width="3dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:text="0"
android:textAlignment="center"
android:textSize="34sp" />
android:ems="10"
android:gravity="center"
android:inputType="number"
android:text="1"
android:textSize="26sp" />
<ImageView
android:id="@+id/add_set3"
android:layout_width="wrap_content"
android:layout_height="37dp"
android:layout_gravity="center"
android:layout_weight="1"
app:srcCompat="@drawable/ic_add_24px" />
</LinearLayout>
@ -97,25 +102,30 @@
android:orientation="horizontal">
<ImageView
android:id="@+id/del_set2"
android:id="@+id/del_res_set2"
android:layout_width="wrap_content"
android:layout_height="37dp"
android:layout_gravity="center"
android:layout_weight="1"
app:srcCompat="@drawable/ic_remove_24px" />
<TextView
android:id="@+id/numbers_of_sets_all2"
android:layout_width="wrap_content"
android:layout_height="38dp"
<EditText
android:id="@+id/rest_sets_all"
android:layout_width="3dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:text="0"
android:textAlignment="center"
android:textSize="34sp" />
android:ems="10"
android:gravity="center"
android:inputType="number"
android:text="5"
android:textSize="26sp" />
<ImageView
android:id="@+id/add_set2"
android:id="@+id/add_res_set2"
android:layout_width="wrap_content"
android:layout_height="37dp"
android:layout_gravity="center"
android:layout_weight="1"
app:srcCompat="@drawable/ic_add_24px" />
</LinearLayout>
@ -138,22 +148,27 @@
android:id="@+id/del_set"
android:layout_width="wrap_content"
android:layout_height="37dp"
android:layout_gravity="center"
android:layout_weight="1"
app:srcCompat="@drawable/ic_remove_24px" />
<TextView
android:id="@+id/numbers_of_sets_allall"
android:layout_width="wrap_content"
android:layout_height="38dp"
<EditText
android:id="@+id/time_work_all"
android:layout_width="3dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:text="0"
android:textAlignment="center"
android:textSize="34sp" />
android:ems="10"
android:gravity="center"
android:inputType="number"
android:text="5"
android:textSize="26sp" />
<ImageView
android:id="@+id/add_set"
android:layout_width="wrap_content"
android:layout_height="37dp"
android:layout_gravity="center"
android:layout_weight="1"
app:srcCompat="@drawable/ic_add_24px" />
</LinearLayout>
@ -175,22 +190,27 @@
android:id="@+id/del_res"
android:layout_width="wrap_content"
android:layout_height="37dp"
android:layout_gravity="center"
android:layout_weight="1"
app:srcCompat="@drawable/ic_remove_24px" />
<TextView
android:id="@+id/rest_sets_allall"
android:layout_width="wrap_content"
android:layout_height="39dp"
<EditText
android:id="@+id/rest_workout_all"
android:layout_width="3dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:text="0"
android:textAlignment="center"
android:textSize="34sp" />
android:ems="10"
android:gravity="center"
android:inputType="number"
android:text="5"
android:textSize="26sp" />
<ImageView
android:id="@+id/add_res"
android:layout_width="wrap_content"
android:layout_height="37dp"
android:layout_gravity="center"
android:layout_weight="1"
app:srcCompat="@drawable/ic_add_24px" />

View File

@ -20,7 +20,7 @@
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Тренировка"
android:text="Добавить упражнение"
android:textAlignment="center"
android:textSize="34sp" />
@ -40,7 +40,7 @@
<LinearLayout
android:id="@+id/setting_training"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_height="250dp"
android:layout_marginTop="37dp"
android:orientation="vertical"
app:layout_constraintTop_toBottomOf="@+id/linearLayout"
@ -64,22 +64,27 @@
android:id="@+id/del_set"
android:layout_width="wrap_content"
android:layout_height="37dp"
android:layout_gravity="center"
android:layout_weight="1"
app:srcCompat="@drawable/ic_remove_24px" />
<TextView
android:id="@+id/numbers_of_sets_allall"
android:layout_width="wrap_content"
android:layout_height="38dp"
<EditText
android:id="@+id/time_work"
android:layout_width="3dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:text="0"
android:textAlignment="center"
android:textSize="34sp" />
android:ems="10"
android:gravity="center"
android:inputType="number"
android:text="5"
android:textSize="26sp" />
<ImageView
android:id="@+id/add_set"
android:layout_width="wrap_content"
android:layout_height="37dp"
android:layout_gravity="center"
android:layout_weight="1"
app:srcCompat="@drawable/ic_add_24px" />
</LinearLayout>
@ -88,35 +93,40 @@
android:id="@+id/textView8_all"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Отдых между подходами"
android:text="Отдых между упражнениями"
android:textAlignment="center"
android:textSize="24sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_height="95dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/del_res"
android:layout_width="wrap_content"
android:layout_height="37dp"
android:layout_gravity="center"
android:layout_weight="1"
app:srcCompat="@drawable/ic_remove_24px" />
<TextView
android:id="@+id/rest_sets_allall"
android:layout_width="wrap_content"
android:layout_height="39dp"
<EditText
android:id="@+id/rest_workout"
android:layout_width="3dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:text="0"
android:textAlignment="center"
android:textSize="34sp" />
android:ems="10"
android:gravity="center"
android:inputType="number"
android:text="5"
android:textSize="26sp" />
<ImageView
android:id="@+id/add_res"
android:layout_width="wrap_content"
android:layout_height="37dp"
android:layout_gravity="center"
android:layout_weight="1"
app:srcCompat="@drawable/ic_add_24px" />
</LinearLayout>
@ -131,21 +141,6 @@
app:layout_constraintBottom_toBottomOf="parent"
tools:layout_editor_absoluteX="7dp">
<Button
android:id="@+id/btn_save_all_vse"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_weight="1"
android:background="@drawable/gradient_purpure"
android:text="Сохранить"
android:textAlignment="center"
android:textColor="@color/white"
tools:layout_editor_absoluteX="245dp"
tools:layout_editor_absoluteY="653dp" />
<Button
android:id="@+id/btn_on_main_all_vse"
android:layout_width="150dp"
@ -160,5 +155,20 @@
android:textColor="@color/white"
tools:layout_editor_absoluteX="16dp"
tools:layout_editor_absoluteY="653dp" />
<Button
android:id="@+id/btn_save_all_vse"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_weight="1"
android:background="@drawable/gradient_purpure"
android:text="Сохранить"
android:textAlignment="center"
android:textColor="@color/white"
tools:layout_editor_absoluteX="245dp"
tools:layout_editor_absoluteY="653dp" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -40,7 +40,7 @@
<LinearLayout
android:id="@+id/setting_training"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_height="220dp"
android:layout_marginTop="37dp"
android:orientation="vertical"
app:layout_constraintTop_toBottomOf="@+id/linearLayout"
@ -64,22 +64,27 @@
android:id="@+id/del_set"
android:layout_width="wrap_content"
android:layout_height="37dp"
android:layout_gravity="center"
android:layout_weight="1"
app:srcCompat="@drawable/ic_remove_24px" />
<TextView
<EditText
android:id="@+id/numbers_of_sets"
android:layout_width="wrap_content"
android:layout_height="38dp"
android:layout_width="3dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:text="0"
android:textAlignment="center"
android:textSize="34sp" />
android:ems="10"
android:gravity="center"
android:inputType="number"
android:text="1"
android:textSize="26sp" />
<ImageView
android:id="@+id/add_set"
android:layout_width="wrap_content"
android:layout_height="37dp"
android:layout_gravity="center"
android:layout_weight="1"
app:srcCompat="@drawable/ic_add_24px" />
</LinearLayout>
@ -94,29 +99,34 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/del_res"
android:layout_width="wrap_content"
android:layout_height="37dp"
android:layout_gravity="center"
android:layout_weight="1"
app:srcCompat="@drawable/ic_remove_24px" />
<TextView
<EditText
android:id="@+id/rest_sets"
android:layout_width="wrap_content"
android:layout_height="39dp"
android:layout_width="3dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:text="0"
android:textAlignment="center"
android:textSize="34sp" />
android:ems="10"
android:gravity="center"
android:inputType="number"
android:text="5"
android:textSize="26sp" />
<ImageView
android:id="@+id/add_res"
android:layout_width="wrap_content"
android:layout_height="37dp"
android:layout_gravity="center"
android:layout_weight="1"
app:srcCompat="@drawable/ic_add_24px" />
</LinearLayout>

View File

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="utf-8"?>
<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:background="@drawable/gradient_purpure"
tools:context=".History">
<TextView
android:id="@+id/textView4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:text="История тренировок"
android:textAlignment="center"
android:textSize="34sp"
app:layout_constraintTop_toTopOf="parent" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginBottom="35dp"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<Button
android:id="@+id/btn_on_main"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_weight="1"
android:background="@drawable/green_gradient"
android:text="на главную"
android:textAlignment="center"
android:textColor="@color/white" />
<Button
android:id="@+id/btn_save"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_weight="1"
android:background="@drawable/green_gradient"
android:text="Выбрать"
android:textAlignment="center"
android:textColor="@color/white" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -8,26 +8,29 @@
tools:context=".MainActivity">
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@drawable/background_imagemain"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0" />
<Button
android:id="@+id/settingsButton"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@drawable/ic_settings"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_width="56dp"
android:layout_height="56dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:background="@android:drawable/ic_menu_info_details"
android:backgroundTint="@color/black"
android:contentDescription="Настройки"
android:backgroundTint="@color/black" />
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.cardview.widget.CardView
android:id="@+id/startTrainingCardView"
@ -93,6 +96,29 @@
android:background="@android:color/transparent"
android:text="История тренировок"
android:textColor="@android:color/white" />
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@+id/newTemplateCardView1"
android:layout_width="350dp"
android:layout_height="wrap_content"
android:layout_marginStart="32dp"
android:layout_marginTop="100dp"
android:layout_marginEnd="32dp"
app:cardBackgroundColor="#80000000"
app:cardCornerRadius="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/templatesCardView">
<Button
android:id="@+id/btn_exit"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="@android:color/transparent"
android:text="Закрыть приложение"
android:textColor="@android:color/white" />
</androidx.cardview.widget.CardView>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -1,65 +1,106 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp"
android:background="@drawable/background_image2"> <!-- Добавили background -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Настройки"
android:textSize="24sp"
android:textStyle="bold"
android:layout_marginBottom="16dp"/>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/about_progr_layout"
android:layout_width="match_parent"
android:layout_height="450dp"
android:layout_marginTop="35dp"
android:orientation="vertical"
app:layout_constraintTop_toTopOf="parent"
tools:layout_editor_absoluteX="0dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Таймер для тренировок"
android:textSize="18sp"
android:layout_marginBottom="8dp"/>
android:layout_gravity="center"
android:layout_marginBottom="16dp"
android:text="О программе"
android:textAlignment="center"
android:textSize="24sp"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:text="Название приложения: Таймер для тренировок"
android:textSize="18sp" />
<TextView
android:id="@+id/textView7"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:text="Данное приложение поможет пользователю в организации своих тренировок."
android:textSize="18sp" />
<TextView
android:id="@+id/textView9"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:text="Оно поможет задавать количество подходов и упражнений, устанавливать время работы и отдыха, запускать последние 3 тренировки."
android:textSize="18sp" />
<TextView
android:id="@+id/textView12"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:text="Можно задавать как интервалы для всех упражнений, так и для каждого отдельно, добавляя названия упражнений."
android:textSize="18sp" />
<TextView
android:id="@+id/versionTextView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:text="При возникновении проблем обращаться на почту: stud179277@vyatsu.ru" />
<TextView
android:id="@+id/versionTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Версия: 1.0"
android:layout_marginBottom="16dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:layout_marginBottom="8dp">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Темная тема"
android:textSize="16sp"/>
<Switch
android:id="@+id/darkModeSwitch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
android:layout_marginBottom="16dp"
android:text="Версия: 1.0" />
</LinearLayout>
<Button
android:id="@+id/aboutButton"
<LinearLayout
android:id="@+id/btn_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="О программе"
android:layout_marginBottom="8dp"/>
android:layout_height="100dp"
android:layout_marginBottom="16dp"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
tools:layout_editor_absoluteX="0dp">
<Button
android:id="@+id/developersButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Разработчики"/>
android:background="@drawable/blue_gradient"
android:text="Разработчики" />
<Button
android:id="@+id/btn_on_main"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:background="@drawable/blue_gradient"
android:text="На главную" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>

View File

@ -69,9 +69,9 @@
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="Подход №"
android:text="Подход № "
android:textAlignment="textEnd"
android:textColor="#D0CBCB"
android:textColor="@color/black"
android:textSize="34sp" />
<TextView
@ -82,7 +82,7 @@
android:gravity="center"
android:text=" 1"
android:textAlignment="viewStart"
android:textColor="#D0CBCB"
android:textColor="@color/black"
android:textSize="34sp" />
</LinearLayout>
@ -96,9 +96,9 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="Упражнение"
android:text="Упражнение "
android:textAlignment="textEnd"
android:textColor="#D0CBCB"
android:textColor="@color/black"
android:textSize="34sp" />
<TextView
@ -108,12 +108,12 @@
android:layout_weight="1"
android:text=" 1"
android:textAlignment="viewStart"
android:textColor="#D0CBCB"
android:textColor="@color/black"
android:textSize="34sp" />
</LinearLayout>
<TextView
android:id="@+id/time"
android:id="@+id/timerText"
android:layout_width="163dp"
android:layout_height="153dp"
android:layout_gravity="center"
@ -123,13 +123,13 @@
android:textSize="60sp" />
<TextView
android:id="@+id/work"
android:id="@+id/statusText"
android:layout_width="match_parent"
android:layout_height="70dp"
android:gravity="center"
android:text="Работа"
android:textAlignment="center"
android:textColor="#D0CBCB"
android:textColor="@color/black"
android:textSize="34sp" />
</LinearLayout>