From 5a174fc2f6c58c81379b2f3ce6aa877d01f6180c Mon Sep 17 00:00:00 2001 From: Jordan Artzet Date: Wed, 25 Jan 2023 23:02:50 +0100 Subject: [PATCH] :construction: navigation view is dynamic dynamic added to navigationView add the fragment movies maybe add a generic fragment --- .../ui/activity/MainActivity.kt | 44 ++++++++++++++- .../ui/adapter/CategoryItemDecoration.kt | 12 ++++ .../ui/adapter/HomeItemAdapter.kt | 8 ++- .../ui/fragments/HomeSectionsFragment.kt | 11 ++-- .../ui/fragments/MoviesFragment.kt | 12 +++- .../main/res/drawable/home_page_header.xml | 12 ++++ .../drawable/ic_baseline_star_border_24.xml | 2 +- Sources/app/src/main/res/drawable/ic_home.xml | 2 +- .../app/src/main/res/drawable/ic_movie.xml | 2 +- .../app/src/main/res/drawable/ic_tv_shows.xml | 2 +- .../app/src/main/res/layout/activity_main.xml | 55 +++++++++---------- .../src/main/res/layout/fragment_movies.xml | 2 - .../res/layout/item_vertical_fragment.xml | 9 ++- .../res/menu-v26/bottom_navigation_menu.xml | 23 ++++++++ .../app/src/main/res/values-night/themes.xml | 12 ++-- Sources/app/src/main/res/values/colors.xml | 4 ++ Sources/app/src/main/res/values/strings.xml | 2 +- Sources/app/src/main/res/values/themes.xml | 8 +-- 18 files changed, 163 insertions(+), 59 deletions(-) create mode 100644 Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/adapter/CategoryItemDecoration.kt create mode 100644 Sources/app/src/main/res/drawable/home_page_header.xml create mode 100644 Sources/app/src/main/res/menu-v26/bottom_navigation_menu.xml diff --git a/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/activity/MainActivity.kt b/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/activity/MainActivity.kt index 9214665..1410f0f 100644 --- a/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/activity/MainActivity.kt +++ b/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/activity/MainActivity.kt @@ -1,23 +1,63 @@ package fr.iut.pm.movieapplication.ui.activity +import android.os.Build import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.view.View +import androidx.fragment.app.Fragment import com.google.android.material.bottomnavigation.BottomNavigationView import fr.iut.pm.movieapplication.R import fr.iut.pm.movieapplication.ui.fragments.HomeSectionsFragment +import fr.iut.pm.movieapplication.ui.fragments.MoviesFragment class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) + loadFragments(HomeSectionsFragment(this)) + + val navigationView = findViewById(R.id.navigation_view) + navigationView.setOnItemSelectedListener { + when(it.itemId) + { + R.id.home_page -> { + loadFragments(HomeSectionsFragment(this)) + return@setOnItemSelectedListener true + } + + R.id.movies_page -> { + loadFragments(MoviesFragment(this)) + return@setOnItemSelectedListener true + } + else -> false + } + } + /* //Trends fragment injected in main activity val transaction = supportFragmentManager.beginTransaction() - transaction.replace(R.id.trends_section_container, HomeSectionsFragment()) + transaction.replace(R.id.fragment_container, HomeSectionsFragment()) transaction.addToBackStack(null) transaction.commit() + */ + if(Build.VERSION.SDK_INT < 33) { + // Hide the status bar. + window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_FULLSCREEN + // Remember that you should never show the action bar if the + // status bar is hidden, so hide that too if necessary. + actionBar?.hide() + } + + + - //val bottomNavigationView = findViewById(R.id.navigation_view) + } + + private fun loadFragments(fragment: Fragment) { + val transaction = supportFragmentManager.beginTransaction() + transaction.replace(R.id.fragment_container, fragment) + transaction.addToBackStack(null) + transaction.commit() } } \ No newline at end of file diff --git a/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/adapter/CategoryItemDecoration.kt b/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/adapter/CategoryItemDecoration.kt new file mode 100644 index 0000000..fe08862 --- /dev/null +++ b/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/adapter/CategoryItemDecoration.kt @@ -0,0 +1,12 @@ +package fr.iut.pm.movieapplication.ui.adapter + +import android.graphics.Rect +import android.view.View +import androidx.recyclerview.widget.RecyclerView + +class CategoryItemDecoration : RecyclerView.ItemDecoration() { + + override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State) { + outRect.bottom = 50 + } +} \ No newline at end of file diff --git a/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/adapter/HomeItemAdapter.kt b/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/adapter/HomeItemAdapter.kt index b2c3ef3..2e6f389 100644 --- a/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/adapter/HomeItemAdapter.kt +++ b/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/adapter/HomeItemAdapter.kt @@ -6,8 +6,12 @@ import android.view.ViewGroup import android.widget.ImageView import androidx.recyclerview.widget.RecyclerView import fr.iut.pm.movieapplication.R +import fr.iut.pm.movieapplication.ui.activity.MainActivity -class HomeItemAdapter(private val layoutId : Int) : RecyclerView.Adapter() { +class HomeItemAdapter( + private val context : MainActivity, + private val layoutId : Int + ) : RecyclerView.Adapter() { class ViewHolder(view : View) : RecyclerView.ViewHolder(view) { } @@ -15,7 +19,7 @@ class HomeItemAdapter(private val layoutId : Int) : RecyclerView.Adapter(R.id.home_trends_recycler_view) - homeTrendsRecyclerView?.adapter = HomeItemAdapter(R.layout.item_horizontal_home_page) + homeTrendsRecyclerView?.adapter = HomeItemAdapter(context,R.layout.item_horizontal_home_page) homeTrendsRecyclerView?.addItemDecoration(HomeItemDecoration()) //get the popularity RecyclerView val homePopularityRecyclerView = view?.findViewById(R.id.home_popularity_recycler_view) - homePopularityRecyclerView?.adapter = HomeItemAdapter(R.layout.item_horizontal_home_page) + homePopularityRecyclerView?.adapter = HomeItemAdapter(context,R.layout.item_horizontal_home_page) homePopularityRecyclerView?.addItemDecoration(HomeItemDecoration()) //get the free RecyclerView val homeFreeRecyclerView = view?.findViewById(R.id.home_free_recycler_view) - homeFreeRecyclerView?.adapter = HomeItemAdapter(R.layout.item_horizontal_home_page) + homeFreeRecyclerView?.adapter = HomeItemAdapter(context,R.layout.item_horizontal_home_page) homeFreeRecyclerView?.addItemDecoration(HomeItemDecoration()) return view } diff --git a/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/fragments/MoviesFragment.kt b/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/fragments/MoviesFragment.kt index 66eb838..2989585 100644 --- a/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/fragments/MoviesFragment.kt +++ b/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/fragments/MoviesFragment.kt @@ -5,20 +5,26 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment +import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView import fr.iut.pm.movieapplication.R +import fr.iut.pm.movieapplication.ui.activity.MainActivity +import fr.iut.pm.movieapplication.ui.adapter.CategoryItemDecoration import fr.iut.pm.movieapplication.ui.adapter.HomeItemAdapter import fr.iut.pm.movieapplication.ui.adapter.HomeItemDecoration -class MoviesFragment : Fragment() { +class MoviesFragment( + private val context : MainActivity +) : Fragment() { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { val view = inflater.inflate(R.layout.fragment_movies, container, false) //get the recycler view val moviesRecyclerView = view?.findViewById(R.id.movies_item_recycler_view) - moviesRecyclerView?.adapter = HomeItemAdapter(R.layout.item_vertical_fragment) - moviesRecyclerView?.addItemDecoration(HomeItemDecoration()) + moviesRecyclerView?.adapter = HomeItemAdapter(context,R.layout.item_vertical_fragment) + moviesRecyclerView?.layoutManager = GridLayoutManager(context, 2) + moviesRecyclerView?.addItemDecoration(CategoryItemDecoration()) return view diff --git a/Sources/app/src/main/res/drawable/home_page_header.xml b/Sources/app/src/main/res/drawable/home_page_header.xml new file mode 100644 index 0000000..0dcd345 --- /dev/null +++ b/Sources/app/src/main/res/drawable/home_page_header.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/Sources/app/src/main/res/drawable/ic_baseline_star_border_24.xml b/Sources/app/src/main/res/drawable/ic_baseline_star_border_24.xml index 59aef55..76916cf 100644 --- a/Sources/app/src/main/res/drawable/ic_baseline_star_border_24.xml +++ b/Sources/app/src/main/res/drawable/ic_baseline_star_border_24.xml @@ -1,4 +1,4 @@ - diff --git a/Sources/app/src/main/res/drawable/ic_home.xml b/Sources/app/src/main/res/drawable/ic_home.xml index 5a870f5..b4c94be 100644 --- a/Sources/app/src/main/res/drawable/ic_home.xml +++ b/Sources/app/src/main/res/drawable/ic_home.xml @@ -1,4 +1,4 @@ - diff --git a/Sources/app/src/main/res/drawable/ic_movie.xml b/Sources/app/src/main/res/drawable/ic_movie.xml index a0e2d16..986d02f 100644 --- a/Sources/app/src/main/res/drawable/ic_movie.xml +++ b/Sources/app/src/main/res/drawable/ic_movie.xml @@ -1,4 +1,4 @@ - diff --git a/Sources/app/src/main/res/drawable/ic_tv_shows.xml b/Sources/app/src/main/res/drawable/ic_tv_shows.xml index cdd0f67..b8dc7d7 100644 --- a/Sources/app/src/main/res/drawable/ic_tv_shows.xml +++ b/Sources/app/src/main/res/drawable/ic_tv_shows.xml @@ -1,4 +1,4 @@ - diff --git a/Sources/app/src/main/res/layout/activity_main.xml b/Sources/app/src/main/res/layout/activity_main.xml index 1c12462..a93879b 100644 --- a/Sources/app/src/main/res/layout/activity_main.xml +++ b/Sources/app/src/main/res/layout/activity_main.xml @@ -7,48 +7,47 @@ android:layout_height="match_parent" tools:context=".ui.activity.MainActivity"> - + android:orientation="vertical" + android:background="@drawable/home_page_header" + app:layout_constraintTop_toTopOf="parent"> - + - + + + + app:layout_constraintTop_toBottomOf="@+id/home_page_header_container" /> \ No newline at end of file diff --git a/Sources/app/src/main/res/layout/item_vertical_fragment.xml b/Sources/app/src/main/res/layout/item_vertical_fragment.xml index 00ff925..a07abbd 100644 --- a/Sources/app/src/main/res/layout/item_vertical_fragment.xml +++ b/Sources/app/src/main/res/layout/item_vertical_fragment.xml @@ -1,12 +1,15 @@ @@ -17,7 +20,7 @@ + + + + + + + \ No newline at end of file diff --git a/Sources/app/src/main/res/values-night/themes.xml b/Sources/app/src/main/res/values-night/themes.xml index 9c99240..9817c27 100644 --- a/Sources/app/src/main/res/values-night/themes.xml +++ b/Sources/app/src/main/res/values-night/themes.xml @@ -1,14 +1,14 @@ -