From 14ebcb8554c20e07413cfa0a01d9af258501e994 Mon Sep 17 00:00:00 2001 From: Emre KARTAL Date: Thu, 30 Mar 2023 12:54:41 +0200 Subject: [PATCH] Completion of Fragment Start and beginning of Fragment Detail:sparkles: --- .../java/uca/iut/clermont/data/StubData.kt | 22 ++++++-- .../uca/iut/clermont/view/DetailFragment.kt | 33 ++++++++++++ .../uca/iut/clermont/view/FavoriteFragment.kt | 4 +- .../uca/iut/clermont/view/HomeFragment.kt | 1 - .../uca/iut/clermont/view/StartFragment.kt | 13 +++-- .../clermont/view/adapter/FavoritesAdapter.kt | 3 +- .../clermont/view/adapter/MatchesAdapter.kt | 14 +++++- .../view/viewHolder/FavoriteHolder.kt | 2 +- .../clermont/view/viewHolder/MatchHolder.kt | 5 ++ src/app/src/main/res/drawable/button_next.png | Bin 0 -> 1896 bytes src/app/src/main/res/drawable/empty_like.png | Bin 0 -> 565 bytes src/app/src/main/res/drawable/full_like.png | Bin 0 -> 421 bytes src/app/src/main/res/drawable/shadow.png | Bin 0 -> 607 bytes src/app/src/main/res/layout/activity_main.xml | 5 +- .../src/main/res/layout/cellule_favorite.xml | 2 - .../src/main/res/layout/fragment_detail.xml | 26 +++++++++- .../src/main/res/layout/fragment_favorite.xml | 4 +- src/app/src/main/res/layout/fragment_home.xml | 5 +- .../src/main/res/layout/fragment_start.xml | 47 ++++++++++++++++-- src/app/src/main/res/navigation/my_nav.xml | 10 ++-- 20 files changed, 164 insertions(+), 32 deletions(-) create mode 100644 src/app/src/main/java/uca/iut/clermont/view/DetailFragment.kt create mode 100644 src/app/src/main/res/drawable/button_next.png create mode 100644 src/app/src/main/res/drawable/empty_like.png create mode 100644 src/app/src/main/res/drawable/full_like.png create mode 100644 src/app/src/main/res/drawable/shadow.png diff --git a/src/app/src/main/java/uca/iut/clermont/data/StubData.kt b/src/app/src/main/java/uca/iut/clermont/data/StubData.kt index daa61be..ff47bc5 100644 --- a/src/app/src/main/java/uca/iut/clermont/data/StubData.kt +++ b/src/app/src/main/java/uca/iut/clermont/data/StubData.kt @@ -326,7 +326,7 @@ class StubData : DataManager() { 1, "Paris Saint-Germain FC", "PSG", - "https://crests.football-data.org/524.svg", + "https://www.psg.fr/img/DefaultOpenGraphImage.jpg?20230329", "24 Rue du Commandant Guilbaud, 75016 Paris, France", "https://www.psg.fr/", "1970", @@ -343,7 +343,7 @@ class StubData : DataManager() { 2, "FC Barcelona", "BAR", - "https://crests.football-data.org/81.svg", + "https://upload.wikimedia.org/wikipedia/fr/thumb/a/a1/Logo_FC_Barcelona.svg/1200px-Logo_FC_Barcelona.svg.png", "Carrer d'Aristides Maillol, s/n, 08028 Barcelona, Spain", "https://www.fcbarcelona.com/", "1899", @@ -360,7 +360,7 @@ class StubData : DataManager() { 3, "Liverpool FC", "LIV", - "https://crests.football-data.org/64.svg", + "https://upload.wikimedia.org/wikipedia/fr/thumb/5/54/Logo_FC_Liverpool.svg/1200px-Logo_FC_Liverpool.svg.png", "Anfield Road, Liverpool L4 0TH, United Kingdom", "https://www.liverpoolfc.com/", "1892", @@ -384,7 +384,13 @@ class StubData : DataManager() { "BSA", "LEAGUE", "https://crests.football-data.org/764.svg", - Season(1557, Calendar.getInstance().apply { set(2023, Calendar.MARCH, 15) }, Calendar.getInstance().apply { set(2022, Calendar.DECEMBER, 3) },1, null), + Season( + 1557, + Calendar.getInstance().apply { set(2023, Calendar.MARCH, 15) }, + Calendar.getInstance().apply { set(2022, Calendar.DECEMBER, 3) }, + 1, + null + ), areaList[2], ) ) @@ -395,7 +401,13 @@ class StubData : DataManager() { "ELC", "LEAGUE", "https://crests.football-data.org/PL.png", - Season(1557, Calendar.getInstance().apply { set(2023, Calendar.MARCH, 15) }, Calendar.getInstance().apply { set(2022, Calendar.DECEMBER, 3) },1, null), + Season( + 1557, + Calendar.getInstance().apply { set(2023, Calendar.MARCH, 15) }, + Calendar.getInstance().apply { set(2022, Calendar.DECEMBER, 3) }, + 1, + null + ), areaList[2], ) ) diff --git a/src/app/src/main/java/uca/iut/clermont/view/DetailFragment.kt b/src/app/src/main/java/uca/iut/clermont/view/DetailFragment.kt new file mode 100644 index 0000000..9f2a411 --- /dev/null +++ b/src/app/src/main/java/uca/iut/clermont/view/DetailFragment.kt @@ -0,0 +1,33 @@ +package uca.iut.clermont.view + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageButton +import androidx.fragment.app.Fragment +import uca.iut.clermont.R + +class DetailFragment : Fragment() { + + private var isLiked = false + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + val view = inflater.inflate(R.layout.fragment_detail, container, false) + + val button = view.findViewById(R.id.buttonLike) + + button.setOnClickListener { + isLiked = !isLiked + + button.setImageResource(if (isLiked) R.drawable.full_like else R.drawable.empty_like) + } + + return view; + } + +} \ No newline at end of file diff --git a/src/app/src/main/java/uca/iut/clermont/view/FavoriteFragment.kt b/src/app/src/main/java/uca/iut/clermont/view/FavoriteFragment.kt index 8e0b490..e205008 100644 --- a/src/app/src/main/java/uca/iut/clermont/view/FavoriteFragment.kt +++ b/src/app/src/main/java/uca/iut/clermont/view/FavoriteFragment.kt @@ -16,13 +16,13 @@ import uca.iut.clermont.model.Match import uca.iut.clermont.view.adapter.FavoritesAdapter import uca.iut.clermont.view.adapter.MatchesAdapter -class FavoriteFragment: Fragment() { +class FavoriteFragment : Fragment() { override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { - val view = inflater.inflate(R.layout.fragment_favorite, container, false) + val view = inflater.inflate(R.layout.fragment_favorite, container, false) val competitions = (activity as MainActivity).manager.competitionsMgr.getItems() var buttonHome = view.findViewById(R.id.buttonHome) diff --git a/src/app/src/main/java/uca/iut/clermont/view/HomeFragment.kt b/src/app/src/main/java/uca/iut/clermont/view/HomeFragment.kt index 2071ef5..881fcf2 100644 --- a/src/app/src/main/java/uca/iut/clermont/view/HomeFragment.kt +++ b/src/app/src/main/java/uca/iut/clermont/view/HomeFragment.kt @@ -45,5 +45,4 @@ class HomeFragment : Fragment() { } - } \ No newline at end of file diff --git a/src/app/src/main/java/uca/iut/clermont/view/StartFragment.kt b/src/app/src/main/java/uca/iut/clermont/view/StartFragment.kt index 5f7ff29..dfb371b 100644 --- a/src/app/src/main/java/uca/iut/clermont/view/StartFragment.kt +++ b/src/app/src/main/java/uca/iut/clermont/view/StartFragment.kt @@ -10,8 +10,10 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.ImageButton import android.widget.ImageView import androidx.fragment.app.Fragment +import androidx.navigation.fragment.findNavController import uca.iut.clermont.R @@ -39,6 +41,11 @@ class StartFragment : Fragment(), SensorEventListener { accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL) + val buttonFavorite = view.findViewById(R.id.nextButton) + + buttonFavorite.setOnClickListener { + findNavController().navigate(R.id.detailFragment) + } return view } @@ -53,12 +60,10 @@ class StartFragment : Fragment(), SensorEventListener { val angleY = y / 9.81f if (Math.abs(angleX) > 0.1) { - // Déplacer la balle à droite ou à gauche en fonction de la direction du mouvement - val deltaX = angleX * 20f // La vitesse de déplacement est de 20 pixels par seconde + val deltaX = angleX * 20f * if (angleX > 0) 1 else -1 ObjectAnimator.ofFloat(ball, View.TRANSLATION_X, ball.x + deltaX).start() - // Faire tourner la balle pendant qu'elle se déplace - ObjectAnimator.ofFloat(ball, View.ROTATION, -angleX * 70f).start() + ObjectAnimator.ofFloat(ball, View.ROTATION, angleX * 3400f).start() } lastX = x diff --git a/src/app/src/main/java/uca/iut/clermont/view/adapter/FavoritesAdapter.kt b/src/app/src/main/java/uca/iut/clermont/view/adapter/FavoritesAdapter.kt index 44232e3..d8356e7 100644 --- a/src/app/src/main/java/uca/iut/clermont/view/adapter/FavoritesAdapter.kt +++ b/src/app/src/main/java/uca/iut/clermont/view/adapter/FavoritesAdapter.kt @@ -8,7 +8,8 @@ import uca.iut.clermont.R import uca.iut.clermont.model.Competition import uca.iut.clermont.view.viewHolder.FavoriteHolder -class FavoritesAdapter(private val favoriteCompetition: Array ) : RecyclerView.Adapter() { +class FavoritesAdapter(private val favoriteCompetition: Array) : + RecyclerView.Adapter() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): FavoriteHolder { return FavoriteHolder( LayoutInflater.from(parent.context).inflate(R.layout.cellule_favorite, parent, false) diff --git a/src/app/src/main/java/uca/iut/clermont/view/adapter/MatchesAdapter.kt b/src/app/src/main/java/uca/iut/clermont/view/adapter/MatchesAdapter.kt index 9780b6c..2947e90 100644 --- a/src/app/src/main/java/uca/iut/clermont/view/adapter/MatchesAdapter.kt +++ b/src/app/src/main/java/uca/iut/clermont/view/adapter/MatchesAdapter.kt @@ -3,11 +3,13 @@ package uca.iut.clermont.view.adapter import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide import uca.iut.clermont.R import uca.iut.clermont.model.Match import uca.iut.clermont.view.viewHolder.MatchHolder -class MatchesAdapter(private val recentMatches: Array) : RecyclerView.Adapter() { +class MatchesAdapter(private val recentMatches: Array) : + RecyclerView.Adapter() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MatchHolder { return MatchHolder( LayoutInflater.from(parent.context).inflate(R.layout.cellule_match, parent, false) @@ -19,6 +21,16 @@ class MatchesAdapter(private val recentMatches: Array) : RecyclerView.Ada holder.titleSecondTeam.text = recentMatches[position].awayTeam.name holder.scoreHomeTeam.text = recentMatches[position].score.home.toString() holder.scoreAwayTeam.text = recentMatches[position].score.away.toString() + + Glide.with(holder.itemView.context) + .load(recentMatches[position].homeTeam.crest) + .error(R.drawable.imagenotfound) + .into(holder.imageHomeTeam) + + Glide.with(holder.itemView.context) + .load(recentMatches[position].awayTeam.crest) + .error(R.drawable.imagenotfound) + .into(holder.imageAwayTeam) } override fun getItemCount() = recentMatches.size diff --git a/src/app/src/main/java/uca/iut/clermont/view/viewHolder/FavoriteHolder.kt b/src/app/src/main/java/uca/iut/clermont/view/viewHolder/FavoriteHolder.kt index 1adf251..96c861e 100644 --- a/src/app/src/main/java/uca/iut/clermont/view/viewHolder/FavoriteHolder.kt +++ b/src/app/src/main/java/uca/iut/clermont/view/viewHolder/FavoriteHolder.kt @@ -6,7 +6,7 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import uca.iut.clermont.R -class FavoriteHolder(view: View) : RecyclerView.ViewHolder(view) { +class FavoriteHolder(view: View) : RecyclerView.ViewHolder(view) { val imageFavorites: ImageView val textFavorites: TextView diff --git a/src/app/src/main/java/uca/iut/clermont/view/viewHolder/MatchHolder.kt b/src/app/src/main/java/uca/iut/clermont/view/viewHolder/MatchHolder.kt index 1ebdf4e..511330c 100644 --- a/src/app/src/main/java/uca/iut/clermont/view/viewHolder/MatchHolder.kt +++ b/src/app/src/main/java/uca/iut/clermont/view/viewHolder/MatchHolder.kt @@ -1,6 +1,7 @@ package uca.iut.clermont.view.viewHolder import android.view.View +import android.widget.ImageView import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import uca.iut.clermont.R @@ -10,12 +11,16 @@ class MatchHolder(view: View) : RecyclerView.ViewHolder(view) { val titleSecondTeam: TextView val scoreHomeTeam: TextView val scoreAwayTeam: TextView + val imageHomeTeam: ImageView + val imageAwayTeam: ImageView init { titleFirstTeam = view.findViewById(R.id.TitleFirstTeam) titleSecondTeam = view.findViewById(R.id.TitleSecondTeam) scoreHomeTeam = view.findViewById(R.id.ScoreHomeTeam) scoreAwayTeam = view.findViewById(R.id.ScoreAwayTeam) + imageHomeTeam = view.findViewById(R.id.ImageFirstTeam) + imageAwayTeam = view.findViewById(R.id.ImageSecondTeam) } diff --git a/src/app/src/main/res/drawable/button_next.png b/src/app/src/main/res/drawable/button_next.png new file mode 100644 index 0000000000000000000000000000000000000000..7c5f0e209fb455e595c1cfc3fa62f4f672f7b374 GIT binary patch literal 1896 zcmV-u2bcJXP)vYBy3)+HCWh#n-f+$Krc0&?b!q)SWiXtyDyu62eGmyM@Z{EA#J@=e@mMiKcfCoIN zZN|kyCGr&--jnJT8K&o_$4ZcvRRLuaeIrbE4dEbj1*Z?FNnM znjedaNL9Zf!r<7|TCD%&4q0>d`DZ1w_lyEN&zBRCe#GQ|d`VlvQD(KUpa+@j_cciV z?H)LTW-T_@QMb;8Lc(_iG){Go`#s1kB86ACaI{)PCx& zJ~z&8WH$d^iYp`;P9V4Biz)tCJw>j&Tt7{Y)P!K&eIbx@SB12U@^1IK$f(IF+>@aI zCy+$8&Imxt?0{~!lP3CL$2)<7N$8t1Wl%S^bzOIn*><87)tWYN!CQVZB+u|?ZDS;q zHaA%B3-OF{RVz}@J{5qDOlx~54wC1~6_?92SoK4Z!S==DeP{{F1tGNQkNaqA(?3^7 z=2TuCD%Gtp2fNN!==LT`-&_Z=0`)`7Q&xUjZI4|amRg$U9n^lIsDZPDEa^|84V#x@!0_;jtlJG}rb(L+!EO{{!<-?d zjUuCvn^Dlxej{m(d_M(!0g>K0w4|4ge$|<^3!_8L&F#o$tYI(tw2>hZ+e-Q_01I@r z#(S||2HUGhw|>6NEljr~Ln3y!w?tpSpE8vvS4YCv)rPgbloE?$wq1pyftxWJAhRSg zWYUC20A(jLH$)-Cn?0voQq_bpTd$&!KDolf$qM2yFMg8NhTv=?LDnZx@b_SsNEJz9 z>dt(WK5BtE7(74-OFi50^Br;|@|3nxpi1vhqh2DB~rJ9ygj?2T|0$fl}xvP5yHoQ_Q)ar=T@lV8$ z^fNjBsSvuz$fOonKF$YRprML#;-Mn^TdL}IUr!{DqCjD)Z6C&X>c;&9-O{tG<9sn9 zPzEljq=Z7u);#1C>60V1l)BRG>_kWiydk&8hUwiis6C2JOcfyV^IYzmC>fFCR1jK4 z85*I8$jC*?Ci5Rogq{U!tC-&@kr@_r$@)p$5AcJs@&)MYwJzgsg&@1bTl` zjF(X&3|?3|ZzqLLr5fkTUrSy}u~ud+#-@0GteEWg!oDV-(8w)OA(4{e*UKCGj8r%U zj%f=+bf=$8L9fovG*aed6O{_Tr{s9;WAjQN#^6L7;Sx%GY?%|(tE>~JQ%&XMn(R7V zhEyuAH}hDYkWpOn5$)>BC;GzA&8FACH|xCF{hB6Z7AmptTsf{hP;*PK(qu#jIbbe1 zjMHCpgQs&JpEqN}9da}a6dGhxij_GDSX|wtE5S1-0k!lBD7P&dF0a_ytM<3iF8q&@%d<*98#e@)w1 z00bf8L0hBku1(>ulx?exk0ZX)cCr40jWwU0Z7(2JI_Nxmm`lp|GC&=M=@tZNoV4{A zuinOW5RNCe_s(37Zy300>a3aB20hru)4kb1gm8I+yQ$+&I&Kgt z3)i4$`GnYtW_;@C*;Hl}E>Cp1*X!S%R7eOnEc67FRv`w;G)wHj^{r~tU2OQZ)X_%ay_ z7j$RSejfr<39kzI>gI8HHXM?c8tzQiiK`6l(e~$F{2y=BX z2zbB*BzLZkt{PWYdSrce^)AQp05@jaWt;~Y>@rVtGWw7c=ON>^DKdt$(l89m!IgFy zmSI><&DH{$o4|!KJSK00009a7bBm000XU z000XU0RWnu7ytkO0drDELIAGL9O(c600d`2O+f$vv5yPl0?qDWv5?G}0KFN~*a3pXZW6!G$ zNbGhy*D<8_*L7`Ar;|0^xWbs3&1SErAI=Qmd_E7FU%-a)2sEMGyiQeBgVv$nqt|DS z$Kz*doY&yBv@zO?4eiCQXLzl1xm(EH?-c^7?(h^KKyq|?|`#CWt2#^{N@083)TLesWcgjjs2@5KZGisGb* zk~07R@Iw;eOnlpV6x$dXX9DZ@`+c)suSZ4w7eW{#GkU-(9QhnaTtUE``8_H<%5ez* z@OZR>D#X;Yhz0@OQoT7G4ql38MUmY*3EvylR|XLp0N{DpQt=e@ebl1!9v8^~0PtT( zC)=x|@nW%XeD6nLAfeD5yB~OPeZkgjJxP#sLp+neJFS* thXO;jLWi%egzq!yFGF={9T=)_;~VDk4*;4eDQo}$002ovPDHLkV1gV@4S@gv literal 0 HcmV?d00001 diff --git a/src/app/src/main/res/layout/activity_main.xml b/src/app/src/main/res/layout/activity_main.xml index ab05982..6368a1a 100644 --- a/src/app/src/main/res/layout/activity_main.xml +++ b/src/app/src/main/res/layout/activity_main.xml @@ -11,13 +11,12 @@ android:name="androidx.navigation.fragment.NavHostFragment" android:layout_width="0dp" android:layout_height="0dp" + app:defaultNavHost="true" + app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toBottomOf="parent" - app:defaultNavHost="true" app:navGraph="@navigation/my_nav" /> - \ No newline at end of file diff --git a/src/app/src/main/res/layout/cellule_favorite.xml b/src/app/src/main/res/layout/cellule_favorite.xml index 1da2053..007f53d 100644 --- a/src/app/src/main/res/layout/cellule_favorite.xml +++ b/src/app/src/main/res/layout/cellule_favorite.xml @@ -31,8 +31,6 @@ android:textColor="@color/black" android:textSize="18dp" /> - - \ No newline at end of file diff --git a/src/app/src/main/res/layout/fragment_detail.xml b/src/app/src/main/res/layout/fragment_detail.xml index 77d9ef6..104eb1f 100644 --- a/src/app/src/main/res/layout/fragment_detail.xml +++ b/src/app/src/main/res/layout/fragment_detail.xml @@ -1,6 +1,30 @@ + android:layout_height="match_parent" + tools:context=".view.DetailFragment"> + + + + \ No newline at end of file diff --git a/src/app/src/main/res/layout/fragment_favorite.xml b/src/app/src/main/res/layout/fragment_favorite.xml index 6040af2..6ad5310 100644 --- a/src/app/src/main/res/layout/fragment_favorite.xml +++ b/src/app/src/main/res/layout/fragment_favorite.xml @@ -31,9 +31,9 @@ android:background="@android:color/transparent" android:fontFamily="@font/mulish_bold" android:text="Exit" + android:textAllCaps="false" android:textColor="@color/title" - android:textSize="26dp" - android:textAllCaps="false" /> + android:textSize="26dp" /> diff --git a/src/app/src/main/res/layout/fragment_home.xml b/src/app/src/main/res/layout/fragment_home.xml index 4bb9ec9..55b511d 100644 --- a/src/app/src/main/res/layout/fragment_home.xml +++ b/src/app/src/main/res/layout/fragment_home.xml @@ -98,9 +98,10 @@ + app:layout_constraintTop_toBottomOf="@+id/textViewRecentMatches" + tools:itemCount="100" /> \ No newline at end of file diff --git a/src/app/src/main/res/layout/fragment_start.xml b/src/app/src/main/res/layout/fragment_start.xml index 486d25e..bc24907 100644 --- a/src/app/src/main/res/layout/fragment_start.xml +++ b/src/app/src/main/res/layout/fragment_start.xml @@ -1,18 +1,57 @@ + android:layout_height="match_parent"> + + + + + + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/shadow"> + + + + + + \ No newline at end of file diff --git a/src/app/src/main/res/navigation/my_nav.xml b/src/app/src/main/res/navigation/my_nav.xml index 7468244..ec5c2aa 100644 --- a/src/app/src/main/res/navigation/my_nav.xml +++ b/src/app/src/main/res/navigation/my_nav.xml @@ -7,10 +7,10 @@ + android:label="StartFragment"> + android:id="@+id/action_startFragment_to_detailFragment" + app:destination="@id/detailFragment" /> + \ No newline at end of file