导航切换动画调整

将默认的淡入淡出动画效果替换为更接近iOS风格的侧滑动画,提升页面切换的流畅度和视觉体验。

**具体变更:**

*   **页面进入:** 新页面从右侧滑入。
*   **页面退出:** 当前页面向右侧滑出,前一页面从左侧轻微偏移处滑回。
*   **动画时长:** 统一设置为280毫秒。

**影响范围:**

*   图片详情页 (`ImagePagerScreen`)
*   创建群聊页 (`CreateGroupChatScreen`)

**其他优化:**

*   **创建群聊页UI调整:**
    *   群聊名称输入框样式统一,采用圆角灰色背景。
    *   底部创建按钮适配导航栏高度。
    *   列表区域自适应填满剩余空间,防止内容被遮挡。
    *   选择成员列表项固定高度,避免选中状态变化时布局跳动。
    *   为头像和选择框添加默认图和占位图。
*   **ImageLoader优化:**
    *   实现全局共享的 `ImageLoader` 实例,避免重复创建,提高内存缓存利用率。
*   **列表性能优化:**
    *   为好友列表和AI助手列表的 `items` 添加 `key`,提升列表项更新效率。
*   **资源清理调整:**
    *   移除了在离开首页和动态页时全量清理资源的操作,以避免返回时列表重置或不必要的重新加载。
*   **ProfileV3页代码清理:**
    *   移除未使用的导入。
This commit is contained in:
2025-08-31 21:13:06 +08:00
parent 21200910c1
commit 5759d4ec95
8 changed files with 126 additions and 93 deletions

View File

@@ -16,6 +16,8 @@ import java.util.UUID
import java.util.concurrent.TimeUnit
object Utils {
// 全局共享的 ImageLoader避免每次创建导致内存缓存不共享
private var sharedImageLoader: ImageLoader? = null
fun generateRandomString(length: Int): String {
val allowedChars = ('A'..'Z') + ('a'..'z') + ('0'..'9')
return (1..length)
@@ -24,23 +26,18 @@ object Utils {
}
fun getImageLoader(context: Context): ImageLoader {
val appContext = context.applicationContext
val existing = sharedImageLoader
if (existing != null) return existing
val okHttpClient = getUnsafeOkHttpClient(authInterceptor = AuthInterceptor())
return ImageLoader.Builder(context)
val loader = ImageLoader.Builder(appContext)
.okHttpClient(okHttpClient)
.memoryCachePolicy(CachePolicy.ENABLED)
.diskCachePolicy(CachePolicy.ENABLED)
// .memoryCache {
// MemoryCache.Builder(context)
// .maxSizePercent(0.25) // 设置内存缓存大小为可用内存的 25%
// .build()
// }
// .diskCache {
// DiskCache.Builder()
// .directory(context.cacheDir.resolve("image_cache"))
// .maxSizePercent(0.02) // 设置磁盘缓存大小为可用存储空间的 2%
// .build()
// }
.build()
sharedImageLoader = loader
return loader
}
fun getTimeAgo(date: Date): String {