From 2ed5639cbc01da65b71555f5d0f24f9e52083e89 Mon Sep 17 00:00:00 2001 From: AllenTom Date: Mon, 10 Nov 2025 17:55:33 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E7=9F=AD=E8=A7=86?= =?UTF-8?q?=E9=A2=91=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增短视频信息流页面,支持上下滑动切换视频。 - 实现视频播放、暂停、加载、空状态及错误处理等基础功能。 - 在视频页面中集成点赞、评论、收藏等互动操作。 - 后端接口新增 `videoFilter` 参数,用于仅获取包含视频的动态。 - 扩展了 `MomentEntity` 和相关数据模型,以支持视频数据。 - 将短视频页面集成到动态(Moment)Tab中。 --- .../com/aiosman/ravenow/data/MomentService.kt | 120 ++++++- .../aiosman/ravenow/data/api/RiderProAPI.kt | 1 + .../java/com/aiosman/ravenow/entity/Moment.kt | 52 ++- .../ravenow/ui/index/tabs/moment/Moment.kt | 2 + .../moment/tabs/shorts/ShortVideoScreen.kt | 185 +++++++++++ .../moment/tabs/shorts/ShortVideoViewModel.kt | 21 ++ .../tabs/profile/composable/GalleryItem.kt | 2 +- .../ui/index/tabs/shorts/ShortViewCompose.kt | 297 +++++++++++++----- 8 files changed, 598 insertions(+), 82 deletions(-) create mode 100644 app/src/main/java/com/aiosman/ravenow/ui/index/tabs/moment/tabs/shorts/ShortVideoScreen.kt create mode 100644 app/src/main/java/com/aiosman/ravenow/ui/index/tabs/moment/tabs/shorts/ShortVideoViewModel.kt diff --git a/app/src/main/java/com/aiosman/ravenow/data/MomentService.kt b/app/src/main/java/com/aiosman/ravenow/data/MomentService.kt index ab7f3ff..3d4a1fb 100644 --- a/app/src/main/java/com/aiosman/ravenow/data/MomentService.kt +++ b/app/src/main/java/com/aiosman/ravenow/data/MomentService.kt @@ -4,6 +4,7 @@ import com.aiosman.ravenow.R import com.aiosman.ravenow.data.api.ApiClient import com.aiosman.ravenow.entity.MomentEntity import com.aiosman.ravenow.entity.MomentImageEntity +import com.aiosman.ravenow.entity.MomentVideoEntity import com.google.gson.annotations.SerializedName import java.io.File @@ -12,8 +13,12 @@ data class Moment( val id: Long, @SerializedName("textContent") val textContent: String, + @SerializedName("url") + val url: String? = null, @SerializedName("images") - val images: List, + val images: List? = null, + @SerializedName("videos") + val videos: List