From a6b4484e1e8428cf72d8db1c78126d88d6dc7235 Mon Sep 17 00:00:00 2001 From: Amr Hossam Date: Sat, 6 Apr 2024 07:27:40 +0200 Subject: [PATCH 1/5] Added Exercise Info View. --- app/src/main/AndroidManifest.xml | 16 ++- .../activities/ExerciseInfoActivity.kt | 127 ++++++++++++++++++ .../TodayWorkoutActivity.kt | 2 +- .../WeeklyWorkoutActivity.kt | 2 +- .../ui/workout/adapters/EquipmentAdapter.kt | 35 +++++ app/src/main/res/color/toggle_button.xml | 2 +- .../res/layout/activity_exercise_info.xml | 66 +++++++++ .../res/layout/activity_today_workout.xml | 2 +- .../res/layout/activity_weekly_workout.xml | 2 +- app/src/main/res/layout/equipments_view.xml | 21 +++ app/src/main/res/layout/instructions_view.xml | 76 +++++++++++ app/src/main/res/layout/item_equipment.xml | 45 +++++++ .../main/res/layout/muscels_worked_view.xml | 40 ++++++ app/src/main/res/values/colors.xml | 1 + app/src/main/res/values/strings.xml | 5 + 15 files changed, 430 insertions(+), 12 deletions(-) create mode 100644 app/src/main/java/com/modarb/android/ui/workout/activities/ExerciseInfoActivity.kt rename app/src/main/java/com/modarb/android/ui/workout/{activites => activities}/TodayWorkoutActivity.kt (96%) rename app/src/main/java/com/modarb/android/ui/workout/{activites => activities}/WeeklyWorkoutActivity.kt (97%) create mode 100644 app/src/main/java/com/modarb/android/ui/workout/adapters/EquipmentAdapter.kt create mode 100644 app/src/main/res/layout/activity_exercise_info.xml create mode 100644 app/src/main/res/layout/equipments_view.xml create mode 100644 app/src/main/res/layout/instructions_view.xml create mode 100644 app/src/main/res/layout/item_equipment.xml create mode 100644 app/src/main/res/layout/muscels_worked_view.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2a6274a..59bcfe6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -14,6 +14,9 @@ android:supportsRtl="true" android:theme="@style/Theme.Modarb" tools:targetApi="31"> + + + @@ -23,15 +26,14 @@ - - + + + + + @@ -42,7 +44,7 @@ android:name=".MainActivity" android:exported="false" /> diff --git a/app/src/main/java/com/modarb/android/ui/workout/activities/ExerciseInfoActivity.kt b/app/src/main/java/com/modarb/android/ui/workout/activities/ExerciseInfoActivity.kt new file mode 100644 index 0000000..398fea0 --- /dev/null +++ b/app/src/main/java/com/modarb/android/ui/workout/activities/ExerciseInfoActivity.kt @@ -0,0 +1,127 @@ +package com.modarb.android.ui.workout.activities + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.appcompat.app.AppCompatActivity +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import androidx.viewpager2.widget.ViewPager2 +import com.google.android.material.button.MaterialButtonToggleGroup +import com.modarb.android.R +import com.modarb.android.ui.workout.adapters.EquipmentAdapter + +class ExerciseInfoActivity : AppCompatActivity() { + + + private lateinit var viewPager: ViewPager2 + private lateinit var toggleButtonGroup: MaterialButtonToggleGroup + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_exercise_info) + + + + viewPager = findViewById(R.id.viewPager) + toggleButtonGroup = findViewById(R.id.toggle_button_group) + + val adapter = ViewPagerAdapter() + viewPager.adapter = adapter + + toggleButtonGroup.addOnButtonCheckedListener { _, checkedId, isChecked -> + if (isChecked) { + when (checkedId) { + R.id.targetMuscleBtn -> viewPager.currentItem = 0 + R.id.instructionsMuscleBtn -> viewPager.currentItem = 1 + R.id.equipmentBtn -> viewPager.currentItem = 2 + } + } + } + + viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() { + override fun onPageSelected(position: Int) { + toggleButtonGroup.check( + when (position) { + 0 -> R.id.targetMuscleBtn + 1 -> R.id.instructionsMuscleBtn + 2 -> R.id.equipmentBtn + else -> View.NO_ID + } + ) + } + }) + } + + + inner class ViewPagerAdapter : RecyclerView.Adapter() { + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { + val inflater = LayoutInflater.from(parent.context) + return when (viewType) { + 0 -> MusclesWorkedViewHolder( + inflater.inflate( + R.layout.muscels_worked_view, parent, false + ) + ) + + 1 -> InstructionsViewHolder( + inflater.inflate( + R.layout.instructions_view, parent, false + ) + ) + + 2 -> ExerciseInfoViewHolder( + inflater.inflate( + R.layout.equipments_view, parent, false + ) + ) + + else -> throw IllegalArgumentException("Invalid view type") + } + } + + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + when (holder) { +// is MusclesWorkedViewHolder -> holder.bind("My Plan Text") +// is InstructionsViewHolder -> holder.bind("Custom Workout Text") + is ExerciseInfoViewHolder -> holder.bind("Test") + } + } + + override fun getItemCount(): Int = 3 + + override fun getItemViewType(position: Int): Int { + return position + } + } + + inner class MusclesWorkedViewHolder(view: View) : RecyclerView.ViewHolder(view) { +// private val textView: TextView = view.findViewById(R.id.textViewMyPlan) +// +// fun bind(text: String) { +// textView.text = text +// } + } + + inner class InstructionsViewHolder(view: View) : RecyclerView.ViewHolder(view) { +// private val textView: TextView = view.findViewById(R.id.textViewCustomWorkout) +// +// fun bind(text: String) { +// textView.text = text +// } + } + + inner class ExerciseInfoViewHolder(view: View) : RecyclerView.ViewHolder(view) { + val recyclerView: RecyclerView = view.findViewById(R.id.recyclerView) + + fun bind(text: String) { + recyclerView.layoutManager = LinearLayoutManager(this@ExerciseInfoActivity) + + val data = listOf("Item 1", "Item 2", "Item 3") + val adapter = EquipmentAdapter(data) + recyclerView.adapter = adapter + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/modarb/android/ui/workout/activites/TodayWorkoutActivity.kt b/app/src/main/java/com/modarb/android/ui/workout/activities/TodayWorkoutActivity.kt similarity index 96% rename from app/src/main/java/com/modarb/android/ui/workout/activites/TodayWorkoutActivity.kt rename to app/src/main/java/com/modarb/android/ui/workout/activities/TodayWorkoutActivity.kt index a9e6249..0d3a6d4 100644 --- a/app/src/main/java/com/modarb/android/ui/workout/activites/TodayWorkoutActivity.kt +++ b/app/src/main/java/com/modarb/android/ui/workout/activities/TodayWorkoutActivity.kt @@ -1,4 +1,4 @@ -package com.modarb.android.ui.workout.activites +package com.modarb.android.ui.workout.activities import android.os.Bundle import android.view.View diff --git a/app/src/main/java/com/modarb/android/ui/workout/activites/WeeklyWorkoutActivity.kt b/app/src/main/java/com/modarb/android/ui/workout/activities/WeeklyWorkoutActivity.kt similarity index 97% rename from app/src/main/java/com/modarb/android/ui/workout/activites/WeeklyWorkoutActivity.kt rename to app/src/main/java/com/modarb/android/ui/workout/activities/WeeklyWorkoutActivity.kt index d2af11e..b9ee4e3 100644 --- a/app/src/main/java/com/modarb/android/ui/workout/activites/WeeklyWorkoutActivity.kt +++ b/app/src/main/java/com/modarb/android/ui/workout/activities/WeeklyWorkoutActivity.kt @@ -1,4 +1,4 @@ -package com.modarb.android.ui.workout.activites +package com.modarb.android.ui.workout.activities import android.os.Bundle import android.view.View diff --git a/app/src/main/java/com/modarb/android/ui/workout/adapters/EquipmentAdapter.kt b/app/src/main/java/com/modarb/android/ui/workout/adapters/EquipmentAdapter.kt new file mode 100644 index 0000000..d961174 --- /dev/null +++ b/app/src/main/java/com/modarb/android/ui/workout/adapters/EquipmentAdapter.kt @@ -0,0 +1,35 @@ +package com.modarb.android.ui.workout.adapters + +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.modarb.android.R + +class EquipmentAdapter(private val data: List) : + RecyclerView.Adapter() { + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { + val view = + LayoutInflater.from(parent.context).inflate(R.layout.item_equipment, parent, false) + return ViewHolder(view) + } + + override fun onBindViewHolder(holder: ViewHolder, position: Int) { + holder.bind(data[position]) + } + + override fun getItemCount(): Int = data.size + + inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + private val imageView: ImageView = itemView.findViewById(R.id.imageView) + private val textView: TextView = itemView.findViewById(R.id.textView) + + fun bind(item: String) { + + textView.text = item + } + } +} diff --git a/app/src/main/res/color/toggle_button.xml b/app/src/main/res/color/toggle_button.xml index 7cbdcde..04e611b 100644 --- a/app/src/main/res/color/toggle_button.xml +++ b/app/src/main/res/color/toggle_button.xml @@ -1,4 +1,4 @@ - + diff --git a/app/src/main/res/layout/activity_exercise_info.xml b/app/src/main/res/layout/activity_exercise_info.xml new file mode 100644 index 0000000..98e35f2 --- /dev/null +++ b/app/src/main/res/layout/activity_exercise_info.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_today_workout.xml b/app/src/main/res/layout/activity_today_workout.xml index 31eb723..7f666ad 100644 --- a/app/src/main/res/layout/activity_today_workout.xml +++ b/app/src/main/res/layout/activity_today_workout.xml @@ -5,7 +5,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/black" - tools:context=".ui.workout.activites.TodayWorkoutActivity"> + tools:context=".ui.workout.activities.TodayWorkoutActivity"> + tools:context=".ui.workout.activities.WeeklyWorkoutActivity"> + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/instructions_view.xml b/app/src/main/res/layout/instructions_view.xml new file mode 100644 index 0000000..0558589 --- /dev/null +++ b/app/src/main/res/layout/instructions_view.xml @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_equipment.xml b/app/src/main/res/layout/item_equipment.xml new file mode 100644 index 0000000..76aba81 --- /dev/null +++ b/app/src/main/res/layout/item_equipment.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + diff --git a/app/src/main/res/layout/muscels_worked_view.xml b/app/src/main/res/layout/muscels_worked_view.xml new file mode 100644 index 0000000..0933795 --- /dev/null +++ b/app/src/main/res/layout/muscels_worked_view.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 8b11eed..cba1399 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -30,5 +30,6 @@ #D0C2FF #5A5A5A #A3A3A3 + #232323 \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 59915ef..acfc626 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -135,6 +135,11 @@ age weight height + Muscles Worked + Target muscle + Instructions + Equipment + Benefits \ No newline at end of file From 0382bb04467526321bce3f496c629d770dae1282 Mon Sep 17 00:00:00 2001 From: Amr Hossam Date: Sun, 7 Apr 2024 02:51:02 +0200 Subject: [PATCH 2/5] Added Exercise Info View - Utils --- app/src/main/res/drawable/temp1.png | Bin 0 -> 56994 bytes .../res/layout/activity_exercise_info.xml | 104 +++++++++++++++++- 2 files changed, 99 insertions(+), 5 deletions(-) create mode 100644 app/src/main/res/drawable/temp1.png diff --git a/app/src/main/res/drawable/temp1.png b/app/src/main/res/drawable/temp1.png new file mode 100644 index 0000000000000000000000000000000000000000..17197b741475b0abb6b943be693a8162461bea0f GIT binary patch literal 56994 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 + + + + + + + + + + + + + + + + + + + + + + + + @@ -25,6 +116,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/target_muscle" + android:insetRight="-8dp" android:textColor="@color/white" android:textSize="14sp" app:backgroundTint="@color/toggle_button" @@ -34,6 +126,8 @@ android:id="@+id/instructionsMuscleBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:insetLeft="-16dp" + android:insetRight="-16dp" android:text="@string/instructions" android:textColor="@color/white" android:textSize="14sp" From d4f3a03bde34285c83d37570cee20137f1ed1f77 Mon Sep 17 00:00:00 2001 From: Amr Hossam Date: Sun, 7 Apr 2024 20:46:38 +0200 Subject: [PATCH 3/5] Refactor - Switched activity to fragment - Refactor files --- app/src/main/AndroidManifest.xml | 12 ++++---- .../more}/activities/EditProfileActivity.kt | 4 +-- .../ui/more}/activities/ProfileActivity.kt | 4 +-- .../ui/home/ui/more/fragments/MoreFragment.kt | 30 +++++++++++++++++++ .../ui/menu/activities/MenuActivity.kt | 19 ------------ .../main/res/layout/activity_edit_profile.xml | 5 ++-- .../res/layout/activity_exercise_info.xml | 2 +- .../{activity_menu.xml => fragment_more.xml} | 2 +- .../main/res/navigation/mobile_navigation.xml | 4 +-- 9 files changed, 46 insertions(+), 36 deletions(-) rename app/src/main/java/com/modarb/android/ui/{menu => home/ui/more}/activities/EditProfileActivity.kt (96%) rename app/src/main/java/com/modarb/android/ui/{menu => home/ui/more}/activities/ProfileActivity.kt (91%) create mode 100644 app/src/main/java/com/modarb/android/ui/home/ui/more/fragments/MoreFragment.kt delete mode 100644 app/src/main/java/com/modarb/android/ui/menu/activities/MenuActivity.kt rename app/src/main/res/layout/{activity_menu.xml => fragment_more.xml} (99%) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 59bcfe6..26a417b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -18,14 +18,14 @@ - + + + diff --git a/app/src/main/java/com/modarb/android/ui/menu/activities/EditProfileActivity.kt b/app/src/main/java/com/modarb/android/ui/home/ui/more/activities/EditProfileActivity.kt similarity index 96% rename from app/src/main/java/com/modarb/android/ui/menu/activities/EditProfileActivity.kt rename to app/src/main/java/com/modarb/android/ui/home/ui/more/activities/EditProfileActivity.kt index c21796e..200dfb1 100644 --- a/app/src/main/java/com/modarb/android/ui/menu/activities/EditProfileActivity.kt +++ b/app/src/main/java/com/modarb/android/ui/home/ui/more/activities/EditProfileActivity.kt @@ -1,12 +1,12 @@ -package com.modarb.android.ui.menu.activities +package com.modarb.android.ui.home.ui.more.activities import android.content.Intent -import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.ArrayAdapter import android.widget.Button import android.widget.ListView import androidx.appcompat.app.AlertDialog +import androidx.appcompat.app.AppCompatActivity import com.modarb.android.R class EditProfileActivity : AppCompatActivity() { diff --git a/app/src/main/java/com/modarb/android/ui/menu/activities/ProfileActivity.kt b/app/src/main/java/com/modarb/android/ui/home/ui/more/activities/ProfileActivity.kt similarity index 91% rename from app/src/main/java/com/modarb/android/ui/menu/activities/ProfileActivity.kt rename to app/src/main/java/com/modarb/android/ui/home/ui/more/activities/ProfileActivity.kt index d19de0b..efa7189 100644 --- a/app/src/main/java/com/modarb/android/ui/menu/activities/ProfileActivity.kt +++ b/app/src/main/java/com/modarb/android/ui/home/ui/more/activities/ProfileActivity.kt @@ -1,9 +1,9 @@ -package com.modarb.android.ui.menu.activities +package com.modarb.android.ui.home.ui.more.activities import android.content.Intent -import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.View +import androidx.appcompat.app.AppCompatActivity import com.modarb.android.R class ProfileActivity : AppCompatActivity() { diff --git a/app/src/main/java/com/modarb/android/ui/home/ui/more/fragments/MoreFragment.kt b/app/src/main/java/com/modarb/android/ui/home/ui/more/fragments/MoreFragment.kt new file mode 100644 index 0000000..eccfcff --- /dev/null +++ b/app/src/main/java/com/modarb/android/ui/home/ui/more/fragments/MoreFragment.kt @@ -0,0 +1,30 @@ +package com.modarb.android.ui.home.ui.more.fragments + +import android.content.Intent +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.modarb.android.R +import com.modarb.android.ui.home.ui.more.activities.ProfileActivity + +class MoreFragment : Fragment() { + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + return inflater.inflate(R.layout.fragment_more, container, false) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + val cardView = view.findViewById(R.id.cardView) + cardView.setOnClickListener { + startActivity(Intent(requireContext(), ProfileActivity::class.java)) + } + } +} diff --git a/app/src/main/java/com/modarb/android/ui/menu/activities/MenuActivity.kt b/app/src/main/java/com/modarb/android/ui/menu/activities/MenuActivity.kt deleted file mode 100644 index db0f06e..0000000 --- a/app/src/main/java/com/modarb/android/ui/menu/activities/MenuActivity.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.modarb.android.ui.menu.activities - -import android.content.Intent -import androidx.appcompat.app.AppCompatActivity -import android.os.Bundle -import android.view.View -import com.modarb.android.R - -class MenuActivity : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_menu) - - val cardView = findViewById(R.id.cardView) - cardView.setOnClickListener { - startActivity(Intent(this, ProfileActivity::class.java)) - } - } -} diff --git a/app/src/main/res/layout/activity_edit_profile.xml b/app/src/main/res/layout/activity_edit_profile.xml index ab4eff4..b74bced 100644 --- a/app/src/main/res/layout/activity_edit_profile.xml +++ b/app/src/main/res/layout/activity_edit_profile.xml @@ -1,12 +1,11 @@ - + tools:context=".ui.home.ui.more.activities.EditProfileActivity"> + tools:context=".ui.home.ui.more.activities.MenuActivity"> + tools:layout="@layout/fragment_more" /> \ No newline at end of file From c1cd98b9b25b04682dfc318df12caecb5d185bda Mon Sep 17 00:00:00 2001 From: Amr Hossam Date: Sun, 7 Apr 2024 21:19:56 +0200 Subject: [PATCH 4/5] Use svg instead of png - for high quality images - lower size - low cpu usage to draw image. --- app/src/main/res/drawable/ic_challange.xml | 24 ++++++ app/src/main/res/drawable/ic_diagnosis.xml | 24 ++++++ app/src/main/res/drawable/ic_profile.xml | 15 ++++ app/src/main/res/drawable/ic_reminder.xml | 84 +++++++++++++++++++++ app/src/main/res/drawable/ic_settings.xml | 12 +++ app/src/main/res/drawable/ic_statics.xml | 15 ++++ app/src/main/res/drawable/icon_menu1.png | Bin 598 -> 0 bytes app/src/main/res/drawable/icon_menu2.png | Bin 416 -> 0 bytes app/src/main/res/drawable/icon_menu3.png | Bin 879 -> 0 bytes app/src/main/res/drawable/icon_menu4.png | Bin 1338 -> 0 bytes app/src/main/res/drawable/icon_menu5.png | Bin 1137 -> 0 bytes app/src/main/res/drawable/icon_menu6.png | Bin 933 -> 0 bytes app/src/main/res/layout/fragment_more.xml | 36 ++++----- 13 files changed, 192 insertions(+), 18 deletions(-) create mode 100644 app/src/main/res/drawable/ic_challange.xml create mode 100644 app/src/main/res/drawable/ic_diagnosis.xml create mode 100644 app/src/main/res/drawable/ic_profile.xml create mode 100644 app/src/main/res/drawable/ic_reminder.xml create mode 100644 app/src/main/res/drawable/ic_settings.xml create mode 100644 app/src/main/res/drawable/ic_statics.xml delete mode 100644 app/src/main/res/drawable/icon_menu1.png delete mode 100644 app/src/main/res/drawable/icon_menu2.png delete mode 100644 app/src/main/res/drawable/icon_menu3.png delete mode 100644 app/src/main/res/drawable/icon_menu4.png delete mode 100644 app/src/main/res/drawable/icon_menu5.png delete mode 100644 app/src/main/res/drawable/icon_menu6.png diff --git a/app/src/main/res/drawable/ic_challange.xml b/app/src/main/res/drawable/ic_challange.xml new file mode 100644 index 0000000..6e0dda4 --- /dev/null +++ b/app/src/main/res/drawable/ic_challange.xml @@ -0,0 +1,24 @@ + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_diagnosis.xml b/app/src/main/res/drawable/ic_diagnosis.xml new file mode 100644 index 0000000..50f538e --- /dev/null +++ b/app/src/main/res/drawable/ic_diagnosis.xml @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/ic_profile.xml b/app/src/main/res/drawable/ic_profile.xml new file mode 100644 index 0000000..564786a --- /dev/null +++ b/app/src/main/res/drawable/ic_profile.xml @@ -0,0 +1,15 @@ + + + + + + + diff --git a/app/src/main/res/drawable/ic_reminder.xml b/app/src/main/res/drawable/ic_reminder.xml new file mode 100644 index 0000000..f1f6904 --- /dev/null +++ b/app/src/main/res/drawable/ic_reminder.xml @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_settings.xml b/app/src/main/res/drawable/ic_settings.xml new file mode 100644 index 0000000..4da51a6 --- /dev/null +++ b/app/src/main/res/drawable/ic_settings.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_statics.xml b/app/src/main/res/drawable/ic_statics.xml new file mode 100644 index 0000000..7801034 --- /dev/null +++ b/app/src/main/res/drawable/ic_statics.xml @@ -0,0 +1,15 @@ + + + + + + + diff --git a/app/src/main/res/drawable/icon_menu1.png b/app/src/main/res/drawable/icon_menu1.png deleted file mode 100644 index 7a16241568d4b0dba72c72122d4d8596ea787a24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 598 zcmV-c0;&CpP)F;RG*Pf-xdy3V@jAIu#0HQD%VsEkWBA2%g~JU5J8*-wt7j0XoOcp zfpN_#$Dq+el{zFsBnrVUUy2>ou)fX&PNgj&nEKNx3c3ke*ztwvjfoc^^*PKyW1!$? zS6bK%DF2xEyZskL8u4_3oSf&kmah>nN_yoe<<=i>@rN~lt@FZFB@jYin@;V$%V%T$ z9vJ5D`YBX|z#eIw!Rc$9^1R)*x^q*)?yJ<`-#oMvg_Sr>_)xUhTN zO!rr#T!J|XV4?FL&?0c-6NSYDT1tHeHP!)=V&}=OHd8OMsLj$(T!XUMyYktKjL)f# z7$nSjGxcB`b`dd%x2`C2!Gp;=A!2Bjze*1_+)I-K<10X1AV-O$YjG}&IIb8)W7pEW kY<#TIHe%9YQ#gM51M6z0Ep?a6;s5{u07*qoM6N<$f{HW-UH||9 diff --git a/app/src/main/res/drawable/icon_menu2.png b/app/src/main/res/drawable/icon_menu2.png deleted file mode 100644 index ffde59efc42a3025ec6f648166c7f4149dd95ddc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 416 zcmV;R0bl-!P)u%XWcb!{0G7x!Q$fJ;E0=XYFyk%9C0cnj0}VY z0x6F>NE09gD0e0BTkhrV<-WV`-aUc>d6(^O7q*O#j$vQj!S55Ua}V?v<(N>Q(}NGf zxs2OQfW>GL4kvRAsKDdXFG5XV1(YlrFp30ZWSlw}-6lVqL(s(62RlZHfDE`d_w*CZ zCvMRmH1L>Zuknvd%ffB7g4Rj8uwQ8ut8z_?MNe7g**TNolzyqceN|L`V>^ZE`u}`| zK7q7_fU*38MZ~r!&gN?g#ATsHqB?vrI7muB;6jnjS@iwR1*UQ1iYS+$%t$~sDuj5^ z*7+t#+@jqVFva6~9L}%x%qdo4Uf$USyxcR_NeBd@X*);)Mr{aPJ4kUw0vCw@0000< KMNUMnLSTXk2CBgT diff --git a/app/src/main/res/drawable/icon_menu3.png b/app/src/main/res/drawable/icon_menu3.png deleted file mode 100644 index 30ff2354f41e0da94e30003fdd58f1db9f4acb5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 879 zcmV-#1CacQP)iYL9|e<_^1_7c_xLtGmOYubXVe7uXS z@AF-Q?}~;)x_ckg>a-F|13ivrINFut(1IyYRx12LD@RLIxL%&+oq9Sz6h)IBWqL`g zHOz=w1cSvBpoKH~^GJshd^q&wzD$P8_@raV;*ge5K1q4FLJ|fI$sDA_B0}+JQRz_x zG7@_v>XT?R*PNRUH5svq2_;R|RSs2nSj7^alc4D-e9kL$0}Cx28wqs=LTEFY)l%|L2G341DhaaTZ}h2cUhqQzSz+oh!qDsB2UwoH4iA+F-| zT5*ECx@y^faLmfHJFY5Hg$j&Nkp=Ssx~2hSu<-klKD}qYX%G7(+7^?2AFaVMPAPL` zPU1Dw-Z^JY+hNLFh#QnQ+Nbj<^3If2BpIPp6(nF3NbA8MD$$26j(#X}siPcSKHtKa;yiVz zP5GDJh|fKyOc%MZ-Oy}HG}?&?d7Cfp%t8z4zqg*xCd?wCdI}`%hs8e$p|(-MBEE5< zR@f%lPbqio;x>i~H*f0dGUj}f$db?z^f>||DTC9(WG#jcqU;j?0EsM=nkcsi{u|+u zzJBbi>3G}5dQ5Yi4%B77fEjHfgfvmS4+jsExs(xsuD|orPv3tO+pqut002ovPDHLk FV1fjjf|&pS diff --git a/app/src/main/res/drawable/icon_menu4.png b/app/src/main/res/drawable/icon_menu4.png deleted file mode 100644 index d43a92b5bdc11b379d25716b12e411b3c725916e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1338 zcmV-A1;zS_P)^mvyB&*?`!@7O0d3bq0!BS{27grBV=aynqM^7^i@OK-4jn zfCXSjtSTWgS+I_I0wzz82~w-Z^Kdp$$7w+81|`yEFv*Zh+?Xc4 z=FA!mTd|_45yTRXtSF^3=Qx66QAU<>@(69QFiHC^6PVpB3bB+3FeX*P1*Jh z-1}J9Bt?lWSbJkeo@>o#)pSw^t`pMB2=_VghG9Q7D6LPnGWZ&HrYE zByeeS_wtN9pH;-DIfu$|JiyE_EWrk16k=eR?JIJuNNoI~!U~$4tnSBw+i-S13}aax zF>GUJJx&nx6P#idVQX4*=p$g;&e#HC}l7t=+U3c^|fzibU7=UIQY!+LXx1{e+E^zAz>0>VXF_1htlQVDg*hCB9u8d zSvKBk$eYA0px#_R;%L_9q-=b|edPF8h$5`SaaLc|83ZyE?J&b}_W6&++uFW5FU`gG z^(5Ck(moteG*7$c)lZ~NoqQajNXKoPt!0Ic0kLY-J8Sb6u^(X5ZA!RHZzFf!Q%_TD zvOR{9vux)?t+{;&zq+M`<0&?-d?xGW+nd&cW0RFuMwThIZsW%1(!j8DG%(Jw_bbH1 zfESq4PbT_?Wkfj`0G#LjSK(Tb+%2=6B_=gFy&&f>ME2Zu43=jbTXYmyDH=QvMYe8| z&Q2Od&es{JD}92_ikMjV&oQ`-=H6>+Xdol=Z|fAPUP(>XKsRF^TS_cIEKahuB~uYc zpI|S{d^g&2u_w^{6<(|;D~;ped)Js$<}s*!xFr6NIFHYl5i+Jq z!)ZD=#n$*^391pK3p-tWV4b$7j=!3GZWG|@fZe+g`2HT1Qh_j<- zUfcPOjN>V?ixIDy8c8sE3!V@L8jaq!U($SPV~z5B9&{~^;aswZPG_#SGXv5xOiNw@g!j3Dn$=-joU=BpEGexTrH zQ9a&^%Y3d&PqVYG7j=qPxzDl#j39K_Jz<`8MRp_bAh*B#U3@+nxOScg{t%Jt=XK3I wT5SC0lho3Kl<{Bs>Epc|=e@80JeYm|0!=ns%7QMe*8l(j07*qoM6N<$f~JmtX8-^I diff --git a/app/src/main/res/drawable/icon_menu5.png b/app/src/main/res/drawable/icon_menu5.png deleted file mode 100644 index c482398ff55f761a7b841eab602c156ba6f77e7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1137 zcmV-%1djWOP)Yo`qfU@BU7GA(MFW~hp2q}&c;%aYBfFSEgh=>T}Oag}>B##9LxZuq#LP$0@ zPI!Gl;$)i>M~`nv9K0Noh~4cjzV6;#Y>1O}+V1V?>goFV>Z=;2r;K+RQl|lJiqO0w z`b``yee)|I^X`nN-S;j6m8Nu2cLED{$**9qa6|HGIMRTlBR{Pf8q{J zIGz~6_19g=EIVvObjG!~S_&%#`3G;vIz6v}>sO%Ma*Hi>S##m0sIGH<6?;-~GAS*q ztt)OKBc~u*eM=hb&4__rFRn-xw@6hLNcg@GNpv0Y26eWX10n z)W)AW+W~cFpX9ZM`~~gyuikuIA43FO8vzR>;XskQEx90`oP*dx$%`-u4Q5tdEGYt(efYwcac_wFd)7V)Pt4cN~c*k^3Yg zCn#8>qPS~szx~PISGCfcUI2xRsGQ!z0@%3u{by!78n}DMZF=ulpsx+3yIS%8x@L+5 zKSG_u+%%={_M`HYdG0y=iq-CrhK#`IYCo7uIWW=)G~~>-vs^7k%*~LNG0BOZVI{+* zCbwp^)GVlKK?F>CP;ixDjT2olEviUG!I%TRVu5~-E%A}3hrjs*E2k4h$_oS z@=$Q=Qp5frd7mQ5LyN!nRqq(aQZ;fQii|zyVTQ*^#`&YZdHIp;ACB(~OAvnts_&MZ z(SbR$lz6{*<1BDW2&IsYUEjTS=11SN+u(>j z4ZCNkafLV9_;r*#*{oA`;3Gxs6{#xmLV8U7cy*qvmuQEv<dIIPP2sg+I zs+7ci_IwZ1Q3$m(`4j(dfBX5_!}N?CH>HlHMM5Rl2~qFG9c@)RJe*})n6=q$NClpL zHc`SX%uyspl&k7jMoF>QoUE44jleI{dCg7={?l~3zZqW_6p5B`2dYmv}!GNJ2F z2RukGiKy@Isy}Xs!ciJ8&}*#2Zd1w#Af_?(vv#aMM-5pnFkNPF9Wc{Cgvud<`28;5 zx)Ge;V2SMwpU|=77Yh*Ty`8_Owll)<%`(K!5xuE>=eA|k6!lYQ1o>f~SJ_j9 zq721P%E|GztZ_t}4v|6u2WOsoR!&<|8a>dBqM%Sl0Xr(*)2}IxcaY|}LlmA^Q$N|3 z%l!Fjn}>ksTHis6IN}6n8oi<`q_vTzthm96K@8kM!$o}_h*lIrr6RI!WzU~9<F~Csg&~VC@}!5v%;%T;iA}wDa+R58cVbo6FJt!^2LGE&io7{X}9a878r3@&$SyL?7dM6)V#0>OAp>&m(m zV$fGd0*9#2v8)Ap<(V)5ek<9Ta?+5F(tDDQ)fDNxHJ @@ -119,10 +119,10 @@ android:id="@+id/progressView" android:layout_width="32dp" android:layout_height="32dp" - android:layout_marginStart="32dp" + android:layout_marginStart="24dp" android:layout_marginTop="16dp" android:layout_marginBottom="16dp" - android:src="@drawable/icon_menu2" + android:src="@drawable/ic_statics" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -138,7 +138,7 @@ android:gravity="start" android:text="@string/progress" android:textColor="@color/gray_92" - android:textSize="20sp" + android:textSize="16sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@+id/progressView" app:layout_constraintTop_toTopOf="parent" /> @@ -182,10 +182,10 @@ android:id="@+id/injuryCareCenterView" android:layout_width="32dp" android:layout_height="32dp" - android:layout_marginStart="32dp" + android:layout_marginStart="24dp" android:layout_marginTop="16dp" android:layout_marginBottom="16dp" - android:src="@drawable/icon_menu3" + android:src="@drawable/ic_diagnosis" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -201,7 +201,7 @@ android:gravity="start" android:text="@string/injury_care_center" android:textColor="@color/gray_92" - android:textSize="20sp" + android:textSize="16sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@+id/injuryCareCenterView" app:layout_constraintTop_toTopOf="parent" /> @@ -245,10 +245,10 @@ android:id="@+id/challengesView" android:layout_width="32dp" android:layout_height="32dp" - android:layout_marginStart="32dp" + android:layout_marginStart="24dp" android:layout_marginTop="16dp" android:layout_marginBottom="16dp" - android:src="@drawable/icon_menu4" + android:src="@drawable/ic_challange" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -264,7 +264,7 @@ android:gravity="start" android:text="@string/challenges" android:textColor="@color/gray_92" - android:textSize="20sp" + android:textSize="16sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@+id/challengesView" app:layout_constraintTop_toTopOf="parent" /> @@ -308,10 +308,10 @@ android:id="@+id/remindersView" android:layout_width="32dp" android:layout_height="32dp" - android:layout_marginStart="32dp" + android:layout_marginStart="24dp" android:layout_marginTop="16dp" android:layout_marginBottom="16dp" - android:src="@drawable/icon_menu5" + android:src="@drawable/ic_reminder" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -327,7 +327,7 @@ android:gravity="start" android:text="@string/reminders" android:textColor="@color/gray_92" - android:textSize="20sp" + android:textSize="16sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@+id/remindersView" app:layout_constraintTop_toTopOf="parent" /> @@ -372,10 +372,10 @@ android:id="@+id/settingsView" android:layout_width="32dp" android:layout_height="32dp" - android:layout_marginStart="32dp" + android:layout_marginStart="24dp" android:layout_marginTop="16dp" android:layout_marginBottom="16dp" - android:src="@drawable/icon_menu6" + android:src="@drawable/ic_settings" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -391,7 +391,7 @@ android:gravity="start" android:text="@string/settings" android:textColor="@color/gray_92" - android:textSize="20sp" + android:textSize="16sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@+id/settingsView" app:layout_constraintTop_toTopOf="parent" /> From c89fd39b76f3412cad2746c31f97721e3de53ac7 Mon Sep 17 00:00:00 2001 From: Amr Hossam Date: Mon, 8 Apr 2024 00:20:29 +0200 Subject: [PATCH 5/5] Added item for excersice --- app/build.gradle.kts | 3 + .../activities/ExerciseInfoActivity.kt | 2 - app/src/main/res/drawable/ic_close.xml | 10 ++ app/src/main/res/layout/item_excersice.xml | 103 ++++++++++++++++++ app/src/main/res/values/strings.xml | 2 +- gradle.properties | 5 +- 6 files changed, 121 insertions(+), 4 deletions(-) create mode 100644 app/src/main/res/drawable/ic_close.xml create mode 100644 app/src/main/res/layout/item_excersice.xml diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 56bf51e..ad53a19 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -59,6 +59,9 @@ dependencies { implementation("com.google.android.gms:play-services-basement:18.3.0") // json helper implementation("com.google.code.gson:gson:2.10") + // progress indicators + implementation("com.tbuonomo:dotsindicator:5.0") + testImplementation("junit:junit:4.13.2") androidTestImplementation("androidx.test.ext:junit:1.1.5") diff --git a/app/src/main/java/com/modarb/android/ui/workout/activities/ExerciseInfoActivity.kt b/app/src/main/java/com/modarb/android/ui/workout/activities/ExerciseInfoActivity.kt index 398fea0..fcb8a6b 100644 --- a/app/src/main/java/com/modarb/android/ui/workout/activities/ExerciseInfoActivity.kt +++ b/app/src/main/java/com/modarb/android/ui/workout/activities/ExerciseInfoActivity.kt @@ -21,8 +21,6 @@ class ExerciseInfoActivity : AppCompatActivity() { super.onCreate(savedInstanceState) setContentView(R.layout.activity_exercise_info) - - viewPager = findViewById(R.id.viewPager) toggleButtonGroup = findViewById(R.id.toggle_button_group) diff --git a/app/src/main/res/drawable/ic_close.xml b/app/src/main/res/drawable/ic_close.xml new file mode 100644 index 0000000..f9b2911 --- /dev/null +++ b/app/src/main/res/drawable/ic_close.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/item_excersice.xml b/app/src/main/res/layout/item_excersice.xml new file mode 100644 index 0000000..f9d830e --- /dev/null +++ b/app/src/main/res/layout/item_excersice.xml @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index acfc626..6385225 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -98,7 +98,7 @@ Crush Today’s Workout Today’s diet view - my trainer + Trainer Workouts Nutrition More diff --git a/gradle.properties b/gradle.properties index 5f62dc3..b6c2dc5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,7 +7,10 @@ # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. #org.gradle.jvmargs=-Xmx1024m -Dfile.encoding=UTF-8 -org.gradle.jvmargs=-Xms512m -Xmx1024m +org.gradle.daemon=true +org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 +org.gradle.parallel=true +org.gradle.configureondemand=true # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects