From bb23f9cf932728969c4f3adc50fcb6514d6730d0 Mon Sep 17 00:00:00 2001 From: klaus Date: Fri, 18 Jul 2025 18:40:10 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EB=A9=94=EC=9D=B8=20=EB=9D=BC=EC=9D=B4?= =?UTF-8?q?=EB=B8=8C=20-=20=EC=B5=9C=EA=B7=BC=20=EC=A2=85=EB=A3=8C?= =?UTF-8?q?=ED=95=9C=20=EB=9D=BC=EC=9D=B4=EB=B8=8C=20UI=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../live/GetLatestFinishedLiveResponse.kt | 13 +++ .../live/LatestFinishedLiveAdapter.kt | 57 ++++++++++++ .../kr/co/vividnext/sodalive/live/LiveApi.kt | 5 ++ .../vividnext/sodalive/live/LiveFragment.kt | 55 ++++++++++++ .../vividnext/sodalive/live/LiveRepository.kt | 4 + .../co/vividnext/sodalive/live/LiveSummary.kt | 14 ++- .../vividnext/sodalive/live/LiveViewModel.kt | 24 ++++- app/src/main/res/drawable-mdpi/img_live.png | Bin 1390 -> 0 bytes app/src/main/res/drawable-mdpi/rank1.png | Bin 2394 -> 0 bytes app/src/main/res/drawable-mdpi/rank2.png | Bin 2114 -> 0 bytes app/src/main/res/drawable-mdpi/rank3.png | Bin 1954 -> 0 bytes app/src/main/res/drawable-xxhdpi/rank1.png | Bin 0 -> 12830 bytes app/src/main/res/drawable-xxhdpi/rank2.png | Bin 0 -> 12597 bytes app/src/main/res/drawable-xxhdpi/rank3.png | Bin 0 -> 11836 bytes .../main/res/drawable/circle_background.xml | 5 +- app/src/main/res/drawable/img_live.xml | 32 +++++++ app/src/main/res/layout/fragment_live.xml | 33 +++++++ app/src/main/res/layout/item_home_live.xml | 13 ++- .../res/layout/item_latest_finished_live.xml | 84 ++++++++++++++++++ 19 files changed, 326 insertions(+), 13 deletions(-) create mode 100644 app/src/main/java/kr/co/vividnext/sodalive/live/GetLatestFinishedLiveResponse.kt create mode 100644 app/src/main/java/kr/co/vividnext/sodalive/live/LatestFinishedLiveAdapter.kt delete mode 100644 app/src/main/res/drawable-mdpi/img_live.png delete mode 100644 app/src/main/res/drawable-mdpi/rank1.png delete mode 100644 app/src/main/res/drawable-mdpi/rank2.png delete mode 100644 app/src/main/res/drawable-mdpi/rank3.png create mode 100644 app/src/main/res/drawable-xxhdpi/rank1.png create mode 100644 app/src/main/res/drawable-xxhdpi/rank2.png create mode 100644 app/src/main/res/drawable-xxhdpi/rank3.png create mode 100644 app/src/main/res/drawable/img_live.xml create mode 100644 app/src/main/res/layout/item_latest_finished_live.xml diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/GetLatestFinishedLiveResponse.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/GetLatestFinishedLiveResponse.kt new file mode 100644 index 00000000..124f5221 --- /dev/null +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/GetLatestFinishedLiveResponse.kt @@ -0,0 +1,13 @@ +package kr.co.vividnext.sodalive.live + +import androidx.annotation.Keep +import com.google.gson.annotations.SerializedName + +@Keep +data class GetLatestFinishedLiveResponse( + @SerializedName("memberId") val memberId: Long, + @SerializedName("nickname") val nickname: String, + @SerializedName("profileImageUrl") val profileImageUrl: String, + @SerializedName("title") val title: String, + @SerializedName("timeAgo") val timeAgo: String +) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/LatestFinishedLiveAdapter.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/LatestFinishedLiveAdapter.kt new file mode 100644 index 00000000..cb4a8a8b --- /dev/null +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/LatestFinishedLiveAdapter.kt @@ -0,0 +1,57 @@ +package kr.co.vividnext.sodalive.live + +import android.annotation.SuppressLint +import android.content.Context +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import kr.co.vividnext.sodalive.databinding.ItemLatestFinishedLiveBinding + +class LatestFinishedLiveAdapter( + private val onClick: (Long) -> Unit +) : RecyclerView.Adapter() { + + private val items = mutableListOf() + + override fun onCreateViewHolder(parent: android.view.ViewGroup, viewType: Int): ViewHolder { + return ViewHolder( + parent.context, + ItemLatestFinishedLiveBinding.inflate( + android.view.LayoutInflater.from(parent.context), + parent, + false + ) + ) + } + + override fun onBindViewHolder(holder: ViewHolder, position: Int) { + holder.bind(items[position]) + } + + override fun getItemCount(): Int = items.count() + + @SuppressLint("NotifyDataSetChanged") + fun addItems(items: List) { + this.items.clear() + this.items.addAll(items) + notifyDataSetChanged() + } + + inner class ViewHolder( + private val context: Context, + private val binding: ItemLatestFinishedLiveBinding + ) : RecyclerView.ViewHolder(binding.root) { + fun bind(item: GetLatestFinishedLiveResponse) { + Glide + .with(context) + .load(item.profileImageUrl) + .apply(RequestOptions.circleCropTransform()) + .into(binding.ivProfile) + + binding.tvNickname.text = item.nickname + binding.tvTimeAgo.text = item.timeAgo + binding.tvTitle.text = item.title + binding.root.setOnClickListener { onClick(item.memberId) } + } + } +} diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/LiveApi.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/LiveApi.kt index 4f1cfd48..9e10c141 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/LiveApi.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/LiveApi.kt @@ -233,4 +233,9 @@ interface LiveApi { @Path("id") id: Long, @Header("Authorization") authHeader: String ): Single> + + @GET("/live/room/latest-finished-live") + fun getLatestFinishedLive( + @Header("Authorization") authHeader: String + ): Flowable>> } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/LiveFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/LiveFragment.kt index 22b56bac..9e4a8f4c 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/LiveFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/LiveFragment.kt @@ -161,6 +161,7 @@ class LiveFragment : BaseFragment(FragmentLiveBinding::infl setupCommunityPost() setupRecommendLive() setupRecommendChannel() + setupLatestFinishedLiveChannel() setupLiveReservation() } @@ -348,6 +349,60 @@ class LiveFragment : BaseFragment(FragmentLiveBinding::infl } } + private fun setupLatestFinishedLiveChannel() { + val adapter = LatestFinishedLiveAdapter { + startActivity( + Intent( + requireContext(), + UserProfileActivity::class.java + ).apply { + putExtra(Constants.EXTRA_USER_ID, it) + } + ) + } + + val recyclerView = binding.rvLatestFinishedLiveChannel + recyclerView.layoutManager = LinearLayoutManager( + requireContext(), + LinearLayoutManager.HORIZONTAL, + false + ) + + recyclerView.addItemDecoration(object : RecyclerView.ItemDecoration() { + override fun getItemOffsets( + outRect: Rect, + view: View, + parent: RecyclerView, + state: RecyclerView.State + ) { + super.getItemOffsets(outRect, view, parent, state) + + when (parent.getChildAdapterPosition(view)) { + 0 -> { + outRect.left = 0 + outRect.right = 8f.dpToPx().toInt() + } + + liveRecommendChannelAdapter.itemCount - 1 -> { + outRect.left = 8f.dpToPx().toInt() + outRect.right = 0 + } + + else -> { + outRect.left = 8f.dpToPx().toInt() + outRect.right = 8f.dpToPx().toInt() + } + } + } + }) + + recyclerView.adapter = adapter + + viewModel.latestFinishedLiveListLiveData.observe(viewLifecycleOwner) { + adapter.addItems(it) + } + } + @SuppressLint("NotifyDataSetChanged") private fun setupLiveNow() { binding diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/LiveRepository.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/LiveRepository.kt index 2acea0ad..0d29135a 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/LiveRepository.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/LiveRepository.kt @@ -261,4 +261,8 @@ class LiveRepository( roomId, authHeader = token ) + + fun getLatestFinishedLive(token: String) = api.getLatestFinishedLive( + authHeader = token + ) } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/LiveSummary.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/LiveSummary.kt index dd63d632..78a171c0 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/LiveSummary.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/LiveSummary.kt @@ -8,8 +8,14 @@ import kr.co.vividnext.sodalive.settings.event.GetEventResponse @Keep data class LiveSummary( - @SerializedName("liveNow") val liveNow: ApiResponse>, - @SerializedName("liveReservation") val liveReservation: ApiResponse>, - @SerializedName("event") val event: ApiResponse, - @SerializedName("recommendLive") val recommendLive: ApiResponse>, + @SerializedName("liveNow") + val liveNow: ApiResponse>, + @SerializedName("liveReservation") + val liveReservation: ApiResponse>, + @SerializedName("event") + val event: ApiResponse, + @SerializedName("recommendLive") + val recommendLive: ApiResponse>, + @SerializedName("latestFinishedLive") + val latestFinishedLive: ApiResponse> ) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/LiveViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/LiveViewModel.kt index 4e2c6849..6f96cd6c 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/LiveViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/LiveViewModel.kt @@ -61,6 +61,11 @@ class LiveViewModel( val communityPostItemLiveData: LiveData> get() = _communityPostItemLiveData + private val _latestFinishedLiveListLiveData = + MutableLiveData>() + val latestFinishedLiveListLiveData: LiveData> + get() = _latestFinishedLiveListLiveData + var page = 1 var isLast = false private val pageSize = 10 @@ -157,6 +162,10 @@ class LiveViewModel( token = "Bearer ${SharedPreferenceManager.token}" ) + val latestFinishedLive = repository.getLatestFinishedLive( + token = "Bearer ${SharedPreferenceManager.token}" + ) + _isLoading.postValue(true) compositeDisposable.add( @@ -165,7 +174,9 @@ class LiveViewModel( liveReservation, event, recommendLive, - ) { t1, t2, t3, t4 -> LiveSummary(t1, t2, t3, t4) } + latestFinishedLive + ) { t1, t2, t3, t4, t5 -> LiveSummary(t1, t2, t3, t4, t5) } + .subscribeOn(Schedulers.io()) .subscribe( { val now = it.liveNow @@ -223,6 +234,17 @@ class LiveViewModel( _recommendLiveData.postValue(emptyList()) } + val latestFinishedLiveResponse = it.latestFinishedLive + if ( + latestFinishedLiveResponse.success && + latestFinishedLiveResponse.data != null + ) { + val data = latestFinishedLiveResponse.data!! + _latestFinishedLiveListLiveData.postValue(data) + } else { + _latestFinishedLiveListLiveData.postValue(emptyList()) + } + _isLoading.postValue(false) }, { diff --git a/app/src/main/res/drawable-mdpi/img_live.png b/app/src/main/res/drawable-mdpi/img_live.png deleted file mode 100644 index 0b4409d723cbe5d7ca591b539941443b8376a4e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1390 zcmV-!1(EuRP)5lg8b0dqVU9l*=d`ot47S=5{n`L9zLC-xN`U z8rH9QXG2=Wm}H85H(ja3c9;?r^MO)$7{j-2KpF`qjY?RUNfujaln|nX;^s7J3xl0u zMbzSLFov9>zpM z&f;}&Kk__MU9&hpzbex;C${N?;$#j~^_PPPMS-3xXs9`Y5ZjT73j5?#EPiY^au%-T z1e!;}WR3TQX#pEo9w_VEK`A*L3f#c?>bDRYG!tX^*^HMxn~dwN6^qP{ELztJFgT1?VYQADm_UzfX{QDo8 zovKLa?zn)NS&QIEyDw9uO8DH_ck2aRiB}-0XgU9pi3lfgD02#a$#bD*e!BL5JS!F1 zcEOTN-UACzuzZ>MWjLMK^5jOno#w=LMko>4S+lW+5xCZUU2A8tr@Hp5_|w>Q(d4t~ zoA*E?Dkxh&zb4}Tlij(hq~s3|_26o2ooT@9jK~((B!i6i^HOZs{P!TngUXLTL0zp6 zN1dnGPUyj_P88zak@Rk;^8@`GPD8`H(33{{78l?4E2h z5sB*cP=&y>scx4jrm}o!^dmXQ zSfB10(V|&0PWRqMmt?&&>FjOuqm#IBD{wMrN{_P$){PcZC^!3v1&2grW~=~@#Hygy zi(b#%z`lc>XYH6$G%sg8+OB+VFs>K~qj6Zq_8F74aLjkAqMyk^vgHE1SZFO+u?)vN zZ^UK3XlPA7N?i6QBT-rPnL*CKHT(`G`e^;D9Y;&O2D>>~k0QlBlkZHk_t@NKEdwat z-8Lg-NUZ?Vcrgfd(m;thr!{ikd=v% zY)*H&k)5#$Gp4$=@<1S@#Cv9eC#E;mGsQ2p6sn3)#xl}egCe<(iH)Rsny*(KM!R_W zAGM2(q0#hTt6^d#PJ+(Vrp7thpP$M1c|Ult1{O;)Vb6}1LV*=$jQygtFy{U;gfmm)akh z926>Xf4Mq|D#$HN5~mW}f&9F4b0Qix z_mRcwNVz#RZ`-PO;tpg!3;{^$ZBKarNTz*D%ep(X{tY`!kjML3BHRf1=xt-nUn)djO`Nhe-de!`O4|t)-Mw zIvMlx)GZ=@2Q(_Hqw>Sxa#GX$RfUB2`wCle&xiZ@!0DP>RGV& zar@pxzIYexqKBfHfZw#Ibt$FJ`L-5m`TfF>9g0P|Rtx#w8pzXe(Am|1$EsZ|Chbs~ zE`H_3rSwf&iC7Vvg=-mbED101^%!-Rs#cK93${LKiaZGsg75i4kKa#=DfIrC?0}2I z@Bld&gFLz(6j}@I?kGep>lm2^{W%Zqb6244yavC<>+<`P&|CX{ypT={T&Y|in#eQNwv2lC6M`odotothvY>g5f{_pp+gHPE3*H>ak^O>{No#$(q}~`?Y+8+*C`Y%? zoy*3s2{i1$fAGJkNCy{$j0W0gJpZTJ0CJ8#zE{(zo366Y74Cud$Qm{;8zaQT34(Nd5L-jnOlVRE z6(z{xC2}hu&%6()1Ej z;U9gQH}+ScE)PAP-zc{CWhlKZK~n1_h(u*QDaDS^=F@#QW14dcBFh-y?_|Iwf4B^H zY4E$;5UWzj+O3CZ6yOsCNIE=(;JF5B9^4CQ7Z_t5TvAi*AOPsbf8n1y0Xda{a2nWc zi_Dgu_Aj+%NQ!3GFGQIx{?Nw(Dw$imZ9NrK4oeqQ)KyR1N}O|g5F!e!tYv`gc)k}j zfg>9yueE{>w947rD1~k4+ zEWElXCuoiUPbjeBZe~yqa|9{>lMp_^Fu9i_AftQ~@cEen%2VJ`DQEiJV(cChVP=<= zHd+CHOyg|2;~%Np0tw6PE0qhvP02C<7_>SDS>QWNqHwv_DcFWkruECCRb+cSz|~bk zXMhw$JPfUL&*o+Gp$afj=7HF*ee;2wWA2()U(GP}lWYPZ*wpNYBq}CX&0&TtUXk4~ zNHK~Kn^&<)sV5Lm0cFr?6U-(B*J>P3VzW|_Tb`|zQ(z53jvIrPGsf+iJD|IfQEba8s&tc*rZ1tGsQlHXHyA zwyF)RISdic^3lmFfu!=vehFm2=2SgjGZ%WHwAu=%vM^C8`KYNBKKPopEGC1U+1g3g zkqFGpKSVig(on77(*sAhswy1K7gs~9E`eRBg_I~36ux-r_Jh<^;h{tP~ zjkCa3KCGH1YkvzJ7V|`XMYKp0zj;N~-c!?X4f|{B~2ZcyRryCQNgsIiJs+d-6A@T7@d? zRgkK@u-fyBcVFX*_tI5s2I-=mnUeaRY5}ae^mOj(J^Y{;&I_4GeyJZZe8ZtSNj-{|Px zx%b@veCJ=j^8*j?03Twsym3Bs>g?5{SY{|#CbYDML#oBYic2|iI?{U(%ZOzo39dBT zwjJUQ2je&zj`W7GOjs6@zkNB}}TxmKR-F~YNNxP zL$-rwUOfCvbRk2%qw#9nj<28-}e*(QWGhv5lY6kXQ_aOFxj`feu>OB%<{M}|W)Y`)oBO?4NM1O*|N z5}v&YHv2*I&;Hy?m6 zZW;P-Pe{YIsC4?j(hXEsR-mMGH3>b7x>VMj1=>9h=w#xJWFSbICAl~@tJ$}wyyI?8 zbE?}m?G9QYM1m}(ggz$1>=m!i!vaMC(n1ph10#qVjJ&2nCla4~awiV#-GxG*N7{%b zQuxd37jUtwR|q@OiVMX9qbOXl0xp*lQlXx7D~j|$PFJ0r#~4e@CO9YD0)}OETDg#O z%d(~R*_Orp{z56%>9mGxed8DzjX}$3sI4l;*FRs2OxD1kh}gME4^{;Oc>YUuV2*=K zCX1=5Bzgv8^lgT0*wA$YhG}urw7FrLbZ?Vn(J-tz1n2jp#UoTWB7%%_DakZAD_Iqk z3uJT)-8XN+LzV4zyYcA5o8)(|p6SHd$PF3ZLZ2Ho+c)83ySL%=xl6E!z~FEUV+jop zQN9Y${$-$Y5zB*jE{deZ^-jf6L>M^PU@{tX@ld#_fxvhoLz-9sl?V!wzxn%F{O%v; za$#Y)<$T^;*vI23s&*DBg$FkB5zZ|kzgG~RkK~+iA8S4wwQMUP zyk^Nz+rpW0dCpvjPigQ_C95t~=9@zy&Ce6pr$1eV?VHyjIuyf|YlGx5N9LU%Ygi5x z)h*M;G-b$<)eWW_rWin+Hbdu09$6ORCkv}3A9I-N&x3p7v zRO8uwHF);3yD%0{;-|m=4{addZ9r~Fp^YhS4}{E_6fN6%@02GbzIEV<#pR>`d6Fix zPm!NQYSPYK+!i5nZ1SK>dWPi_NqCdSSN1=KFYnupv56#J`qe3U<m>d~-gD@KV} z^DkeM1ZTrA48-FJq$U#(8`e$X$-EckIvpQ~q?5JVxZ=o4mE}hu`Cwk3m*mBd?(Umd zOP$Y}(pC7{Q+p&q0Y5bv&ENjQ9XtPSzl>8fG9*3y{X_WTQ+3cY8RQHWzC*?5B z1@lp0!OpyAJk_D*_Hbv-vH!n=Cw7S*u>?=<-i&{R(@3UuOsDO<5GT|APizz0#_-Sx zu5=H>Py)HVVY+0v(~kQgnaq$@=Ff#`#4{$|>bQ=r<)sJ~mtg7#{#{ys$e2dEzv)G{;Xlf*}GKO{{c>YnHMz_>-+Z(&_&iVDb!9h+9* zkxeUcb7&G1DP7J9(AmAQ)Q^<`4|PNnvRfLTNKi*VU$%;z<9)aX*u7p>)PMIFohFTQ zJ|gib_L?XyDnLPDfCQew>vqW@LNAWOG*z%;i(}Kq@K_8Jx(7C&TLMJ8?MB=2hWjS@ zet5k8n}q2+4aci=xt$(=LY*yeOHv5mYaf7;>EM@=j4-*5# zzx=~cV~pS<)JI}`go4k1v{Q_U2@;uV5Fu)3kOJk^+fJvw&vX2pGj}@E$6$p?OiX{t z$;{ky@9%uh_xCt=fJIxhU$CXSTaBSZ|J{okn}!-$x_iB$F_Dh0XzU(8`$8vbXf=Zr zi0tM9hM@0^`+G-+o;6S-s|n;s|J%5W06TplAk;ug)AYX4p#w?Oz-}1wgNN1|o)Eiz zqLd>r!5~_7&EAC?*bPDUbsI_O;WXz$#8>_bO&i+~i8n#l6ATE`9jtqFX#W=6poMS) zmWZy|yZVkl8*AI{MkpGeF{dlf7JSb3+TH9wribsDSu@y>(4-Sm(BCk7Yt;OV|S zJ8s%^drv49ryTS!dM=AIC%;h+m#%C?)6E9zmNu$;g>W*C7TTIx)sg)%zxknO+Y`+X z4^)Lb{NQanI1>~eziaEhud~%0P2^tc6fEBB74kUq#UMWIdl%oI9HOcg${{5rgvM~& zoo#5_@^>sZS}0~(*7qknQq5ge{pNG~cY(3?#MwEp*x6Y}~$w|BK>bZ+JcCa5` zeRK?N!3FoI?eHRz}FliwiWAYwsfAez%H$rfy z`VV2<-CJ<)p#QtW>>nZWJRYPNVVG-z4*wul6QaHL0{HW=W7LOfzQ#&Iz|P zPq0Cs%ZCM}2MzKogE?y~_rx9tyjW9L>JeymGf z+jQ^!3P95ZT;IXiw^=y0L!ICvJjWHDOT%&HclfSHpUxb>d6gu(Kcltp_LykU#AVZ1n7+C;d!3?&Xg2#CAAfG z>JKgml9Q5L#-Iqu0&tQ;V^W1W$A)dY!G@SxJh+EKd;m@BTa~&}*^l?_K`E5d)kJ=h zDzAVkdTx?n!_g>{QcN$-^z?j?bHd%#`*oJWY^t+Zlm?jml=(=6in*jtc>y3s3R-zn z{am`nK$A)Z7H|sC@rf`csBPIOj8DL&Fgv!(Ts25#w~$*9q%;D`aQVi?Nl!KC%uo&; zL?fXxm0+mQ0dI6~#VZeV;AI-JkfgHe1~&Z!fpX=Cz-ZW%hqiEOP(GT?x9`p@7*a?` z0;9JZsUVZ#cPv*aY5OHAp_JUT`F`B@Vj6#aqzA=JW*DO*Qd%sLRHH~pbDD;H;75kp zBT&k7r6eg@^*EmQ1%u!QNu|mjN=|GrD~vG$i^Za_Wa!CE0=oH+?P^35OJNS@2)y`W zE{m!Zewnk0L>%T6fx%asaUDlgD3ifYf%LgQ0HG^KOf@5_)G3=vJc=vSIF~mjFnsp1 zx;J-hK!y39NA?CS2h-QzmaV9wxFU%n5Ev;THY%YRFzEAbzJ5lG^FZbUK&@qR;nI(92N_zR4m0gP1g`h zQm7qHFU1VeC3UK@E8a=WJG-9GR%5C9X6|wv;l;lMLJCG7%%f95R%XHV;Zt*uQTR$q zm8}v`9d(E=tH+oggGGgsT(KOQ%tuw>#o^g@)qK3BlHTx0Mlh|snp&S4CMhXMMThnm zs*gjX9dOGn16IP4f}unV`A8jvLvI>XY$m;&$WiH+4v-_b9!P$rkP)HzQ&!OK{Zs-r zfofFgD&!7f^I~{arqX6Wb9OjJfK<)gMd;EPE)HLw~$f^!K#GI$7%QkvJOIAR4Gktt`!2|ANd4D30LCvXj8sF6L?8fvGWnk1Ga oIW?n54D@776N|QJi}v%_4_}nR2-d1el>h($07*qoM6N<$f{!Jm0{{R3 diff --git a/app/src/main/res/drawable-xxhdpi/rank1.png b/app/src/main/res/drawable-xxhdpi/rank1.png new file mode 100644 index 0000000000000000000000000000000000000000..a650229c141ca7e5684d1bc6d075a9110d16c23f GIT binary patch literal 12830 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 dh&zTK;m3{W{TF+`dy#(9splf;uCDItB$0~p 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/circle_background.xml b/app/src/main/res/drawable/circle_background.xml index d79e1a92..b16b7c44 100644 --- a/app/src/main/res/drawable/circle_background.xml +++ b/app/src/main/res/drawable/circle_background.xml @@ -1,5 +1,8 @@ - + + diff --git a/app/src/main/res/drawable/img_live.xml b/app/src/main/res/drawable/img_live.xml new file mode 100644 index 00000000..53d6711f --- /dev/null +++ b/app/src/main/res/drawable/img_live.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_live.xml b/app/src/main/res/layout/fragment_live.xml index 41eb2f6e..4fc1ea2d 100644 --- a/app/src/main/res/layout/fragment_live.xml +++ b/app/src/main/res/layout/fragment_live.xml @@ -102,6 +102,39 @@ android:layout_height="wrap_content" android:layout_marginBottom="48dp" /> + + + + + + + + + + diff --git a/app/src/main/res/layout/item_latest_finished_live.xml b/app/src/main/res/layout/item_latest_finished_live.xml new file mode 100644 index 00000000..383dcd5f --- /dev/null +++ b/app/src/main/res/layout/item_latest_finished_live.xml @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + +