diff --git a/app/src/main/java/com/gamedog/vididin/api/YoutubeApi.kt b/app/src/main/java/com/gamedog/vididin/api/YoutubeApi.kt index 8163e6b..6c230b3 100644 --- a/app/src/main/java/com/gamedog/vididin/api/YoutubeApi.kt +++ b/app/src/main/java/com/gamedog/vididin/api/YoutubeApi.kt @@ -45,7 +45,7 @@ interface YoutubeApi { @GET("/youtube/v3/videos") suspend fun getVideoList( - @Query("part") part: String= URLEncoder.encode("id", "UTF-8"), + @Query("part") part: String= URLEncoder.encode("snippet", "UTF-8"), @Query("key") key: String= VidiConst.YOUTUBE_API_KEY, @Query("chart") chart: String="mostPopular", @Query("regionCode") regionCode: String="BR", diff --git a/app/src/main/java/com/gamedog/vididin/beans/YoutubeBeans.kt b/app/src/main/java/com/gamedog/vididin/beans/YoutubeBeans.kt index e333f63..9aeca07 100644 --- a/app/src/main/java/com/gamedog/vididin/beans/YoutubeBeans.kt +++ b/app/src/main/java/com/gamedog/vididin/beans/YoutubeBeans.kt @@ -9,10 +9,7 @@ import kotlinx.serialization.Serializable data class ResYoutubeChannel( val id: String, val name: String, -) : BaseFragmentStateDiffItem { - override fun getPrimaryKey() = id - override fun getItemId() = id.hashCode().toLong() -} +) @@ -24,21 +21,13 @@ data class ResYoutubePlayList ( val prevPageToken: String, val pageInfo: PageInfo, val items: List, -) /*: BaseFragmentStateDiffItem { - override fun getPrimaryKey() = pageInfo - override fun getItemId() = pageInfo.hashCode().toLong() -}*/ - +) @Serializable data class PageInfo( val totalResults: Int, val resultsPerPage: Int, -) : BaseFragmentStateDiffItem { - override fun getPrimaryKey() = totalResults - override fun getItemId() = totalResults.hashCode().toLong() -} - +) @Serializable data class YoutubeVideo( val kind: String, @@ -60,27 +49,17 @@ data class YoutubeVideo( @Serializable data class ContentDetails( val itemCount: Int, -): BaseFragmentStateDiffItem { - override fun getPrimaryKey() = itemCount - override fun getItemId() = itemCount.hashCode().toLong() -} - +) @Serializable data class Player( val embedHtml: String, -): BaseFragmentStateDiffItem { - override fun getPrimaryKey() = embedHtml - override fun getItemId() = embedHtml.hashCode().toLong() -} +) @Serializable data class Localizations( val title: String, val description: String, -): BaseFragmentStateDiffItem { - override fun getPrimaryKey() = title - override fun getItemId() = title.hashCode().toLong() -} +) @@ -90,33 +69,28 @@ data class Snippet( val channelId: String, val title: String, val description: String, - val thumbnails: String, // - + //val thumbnails: Thumbnail, val channelTitle: String, val defaultLanguage: String, val localized: Localized, -) : BaseFragmentStateDiffItem { - override fun getPrimaryKey() = channelId - override fun getItemId() = channelId.hashCode().toLong() -} +) @Serializable data class Localized( val title: String, val description: String, -) : BaseFragmentStateDiffItem { - override fun getPrimaryKey() = title - override fun getItemId() = title.hashCode().toLong() -} +) + +@Serializable +data class Thumbnail( + val standard: String, +) @Serializable data class Status( val privacyStatus: String, val podcastStatus: Int, -): BaseFragmentStateDiffItem { - override fun getPrimaryKey() = podcastStatus - override fun getItemId() = privacyStatus.hashCode().toLong() -} +) diff --git a/app/src/main/java/com/gamedog/vididin/main/fragments/home/YoutubeViewModel.kt b/app/src/main/java/com/gamedog/vididin/main/fragments/home/YoutubeViewModel.kt index 043aea0..a17ed5d 100644 --- a/app/src/main/java/com/gamedog/vididin/main/fragments/home/YoutubeViewModel.kt +++ b/app/src/main/java/com/gamedog/vididin/main/fragments/home/YoutubeViewModel.kt @@ -28,5 +28,7 @@ class YoutubeViewModel @Inject constructor( data class YoutubeUiState( val playLists: List? = null, + val taskRestTime: Long = 0, + val starState: Boolean = false, ) diff --git a/app/src/main/java/com/gamedog/vididin/main/fragments/home/fragment/HomeItemFragment.kt b/app/src/main/java/com/gamedog/vididin/main/fragments/home/fragment/HomeItemFragment.kt index ba4fc5b..26749f1 100644 --- a/app/src/main/java/com/gamedog/vididin/main/fragments/home/fragment/HomeItemFragment.kt +++ b/app/src/main/java/com/gamedog/vididin/main/fragments/home/fragment/HomeItemFragment.kt @@ -2,6 +2,8 @@ package com.gamedog.vididin.main.fragments.home.fragment import android.os.Bundle +import android.text.method.MovementMethod +import android.text.method.ScrollingMovementMethod import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -10,6 +12,7 @@ import android.view.animation.Animation import android.view.animation.AnimationSet import android.view.animation.ScaleAnimation import androidx.annotation.NonNull +import androidx.core.view.isVisible import com.ama.core.architecture.appBase.AppViewsEmptyViewModelFragment import com.ama.core.common.widget.PopMenuIconView import com.gamedog.vididin.R @@ -46,8 +49,8 @@ class HomeItemFragment : AppViewsEmptyViewModelFragment() { if (mIsPlaying) mPlayer?.pause() else mPlayer?.play() } - tvVideoFrom.text = "@From-" + arguments?.getLong(KEY_ID).toString() - tvVideoIntro.text = "Introduce-" + arguments?.getLong(KEY_ID).toString() + tvVideoFrom.text = mVideoData?.snippet?.localized?.title + tvVideoIntro.text = mVideoData?.snippet?.localized?.description popMenu.setMenuList( mutableListOf( @@ -189,6 +192,10 @@ class HomeItemFragment : AppViewsEmptyViewModelFragment() { mVideoData!!.id, 0f ) + + if (!playerView.isVisible) { + youTubePlayer.pause() + } } } @@ -213,7 +220,6 @@ class HomeItemFragment : AppViewsEmptyViewModelFragment() { } PlayerConstants.PlayerState.ENDED -> { mIsPlaying = false - showPlayIconAnim() } PlayerConstants.PlayerState.BUFFERING -> { mIsPlaying = false @@ -226,8 +232,22 @@ class HomeItemFragment : AppViewsEmptyViewModelFragment() { }) } + override fun onResume() { + super.onResume() + mPlayer?.play() + } + + override fun onStop() { + super.onStop() + mPlayer?.pause() + } private fun hidePlayIconAnim() { + if (!binding?.playIcon!!.isVisible) { + return + } + + with (binding?.playIcon!!) { val animationSet = AnimationSet(true) animationSet.duration = 250 diff --git a/app/src/main/res/layout/vididinapp_feature_home_item_layout.xml b/app/src/main/res/layout/vididinapp_feature_home_item_layout.xml index 519f9a6..546eb2a 100644 --- a/app/src/main/res/layout/vididinapp_feature_home_item_layout.xml +++ b/app/src/main/res/layout/vididinapp_feature_home_item_layout.xml @@ -31,6 +31,7 @@ android:layout_height="100dp" android:padding="20dp" android:src="@mipmap/icon_play" + android:visibility="gone" android:layout_gravity="center"/> @@ -72,7 +73,8 @@ android:layout_height="wrap_content" android:orientation="vertical" android:layout_marginVertical="25dp" - android:layout_marginHorizontal="15dp" + android:layout_marginLeft="15dp" + android:layout_marginRight="80dp" android:layout_gravity="bottom"> - + > + + + + diff --git a/core/architecture/src/main/java/com/ama/core/architecture/ext/ToastExt.kt b/core/architecture/src/main/java/com/ama/core/architecture/ext/ToastExt.kt index 5a06465..755d666 100644 --- a/core/architecture/src/main/java/com/ama/core/architecture/ext/ToastExt.kt +++ b/core/architecture/src/main/java/com/ama/core/architecture/ext/ToastExt.kt @@ -7,11 +7,11 @@ import androidx.fragment.app.Fragment import com.ama.core.architecture.BaseApp -private fun toast(strRes: Int): Unit { +fun showToast(strRes: Int): Unit { Toast.makeText(BaseApp.appContext(), strRes, Toast.LENGTH_SHORT).show() } -fun View.toast(strRes: Int): Unit = toast(strRes = strRes) -fun Fragment.toast(strRes: Int): Unit = toast(strRes = strRes) -fun Activity.toast(strRes: Int): Unit = toast(strRes = strRes) \ No newline at end of file +fun View.toast(strRes: Int): Unit = showToast(strRes = strRes) +fun Fragment.toast(strRes: Int): Unit = showToast(strRes = strRes) +fun Activity.toast(strRes: Int): Unit = showToast(strRes = strRes) \ No newline at end of file diff --git a/core/model/src/main/java/com/ama/core/model/BaseDiffItem.kt b/core/model/src/main/java/com/ama/core/model/BaseDiffItem.kt index ea24fbd..62e6e2f 100644 --- a/core/model/src/main/java/com/ama/core/model/BaseDiffItem.kt +++ b/core/model/src/main/java/com/ama/core/model/BaseDiffItem.kt @@ -1,23 +1,8 @@ package com.ama.core.model - interface BaseDiffItem { - /** - * 用于一级的(areItemsTheSame)比较,获取主key。 - */ fun getPrimaryKey(): Any - - /** - * 用于二级的(areContentsTheSame)比较,默认比较整个对象自己,可修改为比较部分属性。 - */ fun areContentsTheSame(newItem: T): Boolean = this == newItem - - /** - * 用于可选实现(getChangePayload),局部更新时用,获取Item布局局部更新的数据对象。 - * 说明: - * 1、返回null,Item布局更新有动画,否则无动画。 - * 2、需要配合RecyclerView的onBindViewHolder(holder,position,payloads)使用,在payloads内获取传入的值。 - * - */ fun getChangePayload(newItem: T): Any? = newItem -} \ No newline at end of file +} + diff --git a/core/model/src/main/java/com/ama/core/model/BaseFragmentStateDiffItem.kt b/core/model/src/main/java/com/ama/core/model/BaseFragmentStateDiffItem.kt index 3c28b1e..4a071a1 100644 --- a/core/model/src/main/java/com/ama/core/model/BaseFragmentStateDiffItem.kt +++ b/core/model/src/main/java/com/ama/core/model/BaseFragmentStateDiffItem.kt @@ -1,6 +1,5 @@ package com.ama.core.model -import com.ama.core.model.BaseDiffItem interface BaseFragmentStateDiffItem : BaseDiffItem { fun getItemId(): Long