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

View File

@ -4,6 +4,8 @@ import android.app.AlertDialog
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.widget.Button import android.widget.Button
import android.widget.EditText
import android.widget.ImageView
import androidx.activity.enableEdgeToEdge import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat import androidx.core.view.ViewCompat
@ -53,5 +55,46 @@ class AddWorkout : AppCompatActivity() {
val intent = Intent(this, CreatingTraining::class.java) val intent = Intent(this, CreatingTraining::class.java)
startActivity(intent) 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.content.Intent
import android.os.Bundle import android.os.Bundle
import android.widget.Button import android.widget.Button
import android.widget.EditText
import android.widget.ImageView
import androidx.activity.enableEdgeToEdge import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat import androidx.core.view.ViewCompat
@ -23,11 +25,12 @@ class AllTraining : AppCompatActivity() {
} }
val buttonSaveAll: Button = findViewById(R.id.btn_save_all_vse) val buttonSaveAll: Button = findViewById(R.id.btn_save_all_vse)
buttonSaveAll.setOnClickListener { buttonSaveAll.setOnClickListener {
val intent = Intent(this, MainActivity::class.java) val intent = Intent(this, CreatingTraining::class.java)
startActivity(intent) startActivity(intent)
isSave = true isSave = true
} }
val button_on_main_all: Button = findViewById(R.id.btn_on_main_all_vse) val button_on_main_all: Button = findViewById(R.id.btn_on_main_all_vse)
button_on_main_all.setOnClickListener { button_on_main_all.setOnClickListener {
if (isSave == false) { if (isSave == false) {
@ -48,5 +51,35 @@ class AllTraining : AppCompatActivity() {
startActivity(intent) 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.content.Intent
import android.os.Bundle import android.os.Bundle
import android.widget.Button import android.widget.Button
import android.widget.EditText
import android.widget.ImageButton import android.widget.ImageButton
import android.widget.ImageView
import androidx.activity.enableEdgeToEdge import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat import androidx.core.view.ViewCompat
@ -25,8 +27,20 @@ class CreatingTraining : AppCompatActivity() {
buttonSave.setOnClickListener { buttonSave.setOnClickListener {
isSave=true 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) val button_on_main: Button = findViewById(R.id.btn_on_main)
button_on_main.setOnClickListener { button_on_main.setOnClickListener {
if(isSave==false){ 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.content.Intent
import android.os.Bundle import android.os.Bundle
import android.view.View
import android.widget.Button import android.widget.Button
import android.widget.Toast import android.widget.Toast
import androidx.activity.enableEdgeToEdge import androidx.activity.enableEdgeToEdge
@ -31,18 +32,31 @@ class MainActivity : AppCompatActivity() {
startTrainingButton.setOnClickListener { startTrainingButton.setOnClickListener {
Toast.makeText(this, "Запуск тренировки!", Toast.LENGTH_SHORT).show() // Заглушка Toast.makeText(this, "Запуск тренировки!", Toast.LENGTH_SHORT).show() // Заглушка
//TODO: Intent для запуска Activity тренировки (форма 5) //TODO: Intent для запуска Activity тренировки (форма 5)
val intent = Intent(this, timer::class.java)
startActivity(intent)
} }
val templatesButton: Button = findViewById(R.id.templatesButton) val templatesButton: Button = findViewById(R.id.templatesButton)
templatesButton.setOnClickListener { templatesButton.setOnClickListener {
Toast.makeText(this, "Открытие шаблонов!", Toast.LENGTH_SHORT).show() // Заглушка //Toast.makeText(this, "Открытие шаблонов!", Toast.LENGTH_SHORT).show() // Заглушка
//TODO: Intent для открытия Activity шаблонов (форма 3) //TODO: Intent для открытия Activity шаблонов (форма 3)
val intent = Intent(this, AddWorkout::class.java)
startActivity(intent)
} }
val newTemplateButton: Button = findViewById(R.id.newTemplateButton) val newTemplateButton: Button = findViewById(R.id.newTemplateButton)
newTemplateButton.setOnClickListener { newTemplateButton.setOnClickListener {
Toast.makeText(this, "Создание нового шаблона!", Toast.LENGTH_SHORT).show() // Заглушка //Toast.makeText(this, "Создание нового шаблона!", Toast.LENGTH_SHORT).show() // Заглушка
//TODO: Intent для открытия Activity создания шаблона (форма 3) //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 package com.example.timert
import android.content.Context import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.os.Bundle import android.os.Bundle
import android.widget.Switch import android.widget.Switch
@ -16,61 +17,17 @@ class SettingsActivity : AppCompatActivity() {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(R.layout.activity_settings2) 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) 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 { developersButton.setOnClickListener {
AlertDialog.Builder(this) AlertDialog.Builder(this)
.setTitle("Разработчики") .setTitle("Разработчики")
.setMessage(HtmlCompat.fromHtml( .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>" + "<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) .setPositiveButton("ОК", null)
.show() .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.content.Intent
import android.media.Image import android.media.Image
import android.os.Bundle import android.os.Bundle
import android.os.CountDownTimer
import android.widget.Button import android.widget.Button
import android.widget.ImageButton import android.widget.ImageButton
import android.widget.TextView
import androidx.activity.enableEdgeToEdge import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.view.ViewCompat import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsCompat
class timer : AppCompatActivity() { class timer : AppCompatActivity() {
private var isPlay = false 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?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
enableEdgeToEdge() enableEdgeToEdge()
@ -22,6 +37,18 @@ class timer : AppCompatActivity() {
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets 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) val button: ImageButton = findViewById(R.id.stop)
button.setOnClickListener { button.setOnClickListener {
AlertDialog.Builder(this) 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:id="@+id/del_set3"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="37dp" android:layout_height="37dp"
android:layout_gravity="center"
android:layout_weight="1" android:layout_weight="1"
app:srcCompat="@drawable/ic_remove_24px" /> app:srcCompat="@drawable/ic_remove_24px" />
<TextView <EditText
android:id="@+id/numbers_of_sets_all3" android:id="@+id/numbers_of_sets_all"
android:layout_width="wrap_content" android:layout_width="3dp"
android:layout_height="38dp" android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1" android:layout_weight="1"
android:text="0" android:ems="10"
android:textAlignment="center" android:gravity="center"
android:textSize="34sp" /> android:inputType="number"
android:text="1"
android:textSize="26sp" />
<ImageView <ImageView
android:id="@+id/add_set3" android:id="@+id/add_set3"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="37dp" android:layout_height="37dp"
android:layout_gravity="center"
android:layout_weight="1" android:layout_weight="1"
app:srcCompat="@drawable/ic_add_24px" /> app:srcCompat="@drawable/ic_add_24px" />
</LinearLayout> </LinearLayout>
@ -97,25 +102,30 @@
android:orientation="horizontal"> android:orientation="horizontal">
<ImageView <ImageView
android:id="@+id/del_set2" android:id="@+id/del_res_set2"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="37dp" android:layout_height="37dp"
android:layout_gravity="center"
android:layout_weight="1" android:layout_weight="1"
app:srcCompat="@drawable/ic_remove_24px" /> app:srcCompat="@drawable/ic_remove_24px" />
<TextView <EditText
android:id="@+id/numbers_of_sets_all2" android:id="@+id/rest_sets_all"
android:layout_width="wrap_content" android:layout_width="3dp"
android:layout_height="38dp" android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1" android:layout_weight="1"
android:text="0" android:ems="10"
android:textAlignment="center" android:gravity="center"
android:textSize="34sp" /> android:inputType="number"
android:text="5"
android:textSize="26sp" />
<ImageView <ImageView
android:id="@+id/add_set2" android:id="@+id/add_res_set2"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="37dp" android:layout_height="37dp"
android:layout_gravity="center"
android:layout_weight="1" android:layout_weight="1"
app:srcCompat="@drawable/ic_add_24px" /> app:srcCompat="@drawable/ic_add_24px" />
</LinearLayout> </LinearLayout>
@ -138,22 +148,27 @@
android:id="@+id/del_set" android:id="@+id/del_set"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="37dp" android:layout_height="37dp"
android:layout_gravity="center"
android:layout_weight="1" android:layout_weight="1"
app:srcCompat="@drawable/ic_remove_24px" /> app:srcCompat="@drawable/ic_remove_24px" />
<TextView <EditText
android:id="@+id/numbers_of_sets_allall" android:id="@+id/time_work_all"
android:layout_width="wrap_content" android:layout_width="3dp"
android:layout_height="38dp" android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1" android:layout_weight="1"
android:text="0" android:ems="10"
android:textAlignment="center" android:gravity="center"
android:textSize="34sp" /> android:inputType="number"
android:text="5"
android:textSize="26sp" />
<ImageView <ImageView
android:id="@+id/add_set" android:id="@+id/add_set"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="37dp" android:layout_height="37dp"
android:layout_gravity="center"
android:layout_weight="1" android:layout_weight="1"
app:srcCompat="@drawable/ic_add_24px" /> app:srcCompat="@drawable/ic_add_24px" />
</LinearLayout> </LinearLayout>
@ -175,22 +190,27 @@
android:id="@+id/del_res" android:id="@+id/del_res"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="37dp" android:layout_height="37dp"
android:layout_gravity="center"
android:layout_weight="1" android:layout_weight="1"
app:srcCompat="@drawable/ic_remove_24px" /> app:srcCompat="@drawable/ic_remove_24px" />
<TextView <EditText
android:id="@+id/rest_sets_allall" android:id="@+id/rest_workout_all"
android:layout_width="wrap_content" android:layout_width="3dp"
android:layout_height="39dp" android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1" android:layout_weight="1"
android:text="0" android:ems="10"
android:textAlignment="center" android:gravity="center"
android:textSize="34sp" /> android:inputType="number"
android:text="5"
android:textSize="26sp" />
<ImageView <ImageView
android:id="@+id/add_res" android:id="@+id/add_res"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="37dp" android:layout_height="37dp"
android:layout_gravity="center"
android:layout_weight="1" android:layout_weight="1"
app:srcCompat="@drawable/ic_add_24px" /> app:srcCompat="@drawable/ic_add_24px" />

View File

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

View File

@ -40,7 +40,7 @@
<LinearLayout <LinearLayout
android:id="@+id/setting_training" android:id="@+id/setting_training"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="200dp" android:layout_height="220dp"
android:layout_marginTop="37dp" android:layout_marginTop="37dp"
android:orientation="vertical" android:orientation="vertical"
app:layout_constraintTop_toBottomOf="@+id/linearLayout" app:layout_constraintTop_toBottomOf="@+id/linearLayout"
@ -64,22 +64,27 @@
android:id="@+id/del_set" android:id="@+id/del_set"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="37dp" android:layout_height="37dp"
android:layout_gravity="center"
android:layout_weight="1" android:layout_weight="1"
app:srcCompat="@drawable/ic_remove_24px" /> app:srcCompat="@drawable/ic_remove_24px" />
<TextView <EditText
android:id="@+id/numbers_of_sets" android:id="@+id/numbers_of_sets"
android:layout_width="wrap_content" android:layout_width="3dp"
android:layout_height="38dp" android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1" android:layout_weight="1"
android:text="0" android:ems="10"
android:textAlignment="center" android:gravity="center"
android:textSize="34sp" /> android:inputType="number"
android:text="1"
android:textSize="26sp" />
<ImageView <ImageView
android:id="@+id/add_set" android:id="@+id/add_set"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="37dp" android:layout_height="37dp"
android:layout_gravity="center"
android:layout_weight="1" android:layout_weight="1"
app:srcCompat="@drawable/ic_add_24px" /> app:srcCompat="@drawable/ic_add_24px" />
</LinearLayout> </LinearLayout>
@ -94,29 +99,34 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="50dp" android:layout_height="wrap_content"
android:orientation="horizontal"> android:orientation="horizontal">
<ImageView <ImageView
android:id="@+id/del_res" android:id="@+id/del_res"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="37dp" android:layout_height="37dp"
android:layout_gravity="center"
android:layout_weight="1" android:layout_weight="1"
app:srcCompat="@drawable/ic_remove_24px" /> app:srcCompat="@drawable/ic_remove_24px" />
<TextView <EditText
android:id="@+id/rest_sets" android:id="@+id/rest_sets"
android:layout_width="wrap_content" android:layout_width="3dp"
android:layout_height="39dp" android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1" android:layout_weight="1"
android:text="0" android:ems="10"
android:textAlignment="center" android:gravity="center"
android:textSize="34sp" /> android:inputType="number"
android:text="5"
android:textSize="26sp" />
<ImageView <ImageView
android:id="@+id/add_res" android:id="@+id/add_res"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="37dp" android:layout_height="37dp"
android:layout_gravity="center"
android:layout_weight="1" android:layout_weight="1"
app:srcCompat="@drawable/ic_add_24px" /> app:srcCompat="@drawable/ic_add_24px" />
</LinearLayout> </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"> tools:context=".MainActivity">
<ImageView <ImageView
android:id="@+id/imageView"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:scaleType="centerCrop" android:scaleType="centerCrop"
android:src="@drawable/background_imagemain" android:src="@drawable/background_imagemain"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0" />
<Button <Button
android:id="@+id/settingsButton" android:id="@+id/settingsButton"
android:layout_width="48dp" android:layout_width="56dp"
android:layout_height="48dp" android:layout_height="56dp"
android:background="@drawable/ic_settings"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:layout_marginEnd="16dp" android:layout_marginEnd="16dp"
android:background="@android:drawable/ic_menu_info_details"
android:backgroundTint="@color/black"
android:contentDescription="Настройки" android:contentDescription="Настройки"
android:backgroundTint="@color/black" /> app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.cardview.widget.CardView <androidx.cardview.widget.CardView
android:id="@+id/startTrainingCardView" android:id="@+id/startTrainingCardView"
@ -93,6 +96,29 @@
android:background="@android:color/transparent" android:background="@android:color/transparent"
android:text="История тренировок" android:text="История тренировок"
android:textColor="@android:color/white" /> 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.cardview.widget.CardView>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

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

View File

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