Skip to content

Commit f732427

Browse files
authored
优化视频时长显示,时长>=1小时时,显示小时 (#227)
* 优化视频时长显示,时长>=1小时时,显示小时 * 再次调整时长显示,小时部分不补0,方法名改为formatHourMinSec
1 parent b99d85f commit f732427

File tree

18 files changed

+58
-56
lines changed

18 files changed

+58
-56
lines changed

app/mobile/src/main/kotlin/dev/aaa1115910/bv/mobile/component/player/VideoPlayerPages.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ import dev.aaa1115910.biliapi.entity.video.season.Section
8383
import dev.aaa1115910.biliapi.entity.video.season.UgcSeason
8484
import dev.aaa1115910.bv.R
8585
import dev.aaa1115910.bv.mobile.theme.BVMobileTheme
86-
import dev.aaa1115910.bv.util.formatMinSec
86+
import dev.aaa1115910.bv.util.formatHourMinSec
8787

8888
@OptIn(ExperimentalMaterial3Api::class)
8989
@Composable
@@ -595,7 +595,7 @@ private fun PageListItem(
595595
},
596596
trailingContent = (@Composable {
597597
Text(
598-
text = (1000 * (duration?.toLong() ?: 0)).formatMinSec(),
598+
text = (1000 * (duration?.toLong() ?: 0)).formatHourMinSec(),
599599
style = MaterialTheme.typography.bodySmall.copy(
600600
color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.6f)
601601
)

app/mobile/src/main/kotlin/dev/aaa1115910/bv/mobile/component/videocard/RelatedVideoItem.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import dev.aaa1115910.biliapi.entity.user.Author
3030
import dev.aaa1115910.biliapi.entity.video.RelatedVideo
3131
import dev.aaa1115910.bv.R
3232
import dev.aaa1115910.bv.mobile.theme.BVMobileTheme
33-
import dev.aaa1115910.bv.util.formatMinSec
33+
import dev.aaa1115910.bv.util.formatHourMinSec
3434

3535
@Composable
3636
fun RelatedVideoItem(
@@ -70,7 +70,7 @@ fun RelatedVideoItem(
7070
Text(
7171
modifier = Modifier
7272
.padding(horizontal = 4.dp),
73-
text = (relatedVideo.duration * 1000L).formatMinSec(),
73+
text = (relatedVideo.duration * 1000L).formatHourMinSec(),
7474
style = MaterialTheme.typography.bodySmall,
7575
color = Color.White
7676
)

app/mobile/src/main/kotlin/dev/aaa1115910/bv/mobile/component/videocard/UpSpaceVideoItem.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import coil.compose.AsyncImage
2929
import dev.aaa1115910.biliapi.entity.user.SpaceVideo
3030
import dev.aaa1115910.bv.R
3131
import dev.aaa1115910.bv.mobile.theme.BVMobileTheme
32-
import dev.aaa1115910.bv.util.formatMinSec
32+
import dev.aaa1115910.bv.util.formatHourMinSec
3333
import dev.aaa1115910.bv.util.formatPubTimeString
3434
import java.util.Date
3535

@@ -73,7 +73,7 @@ fun UpSpaceVideoItem(
7373
Text(
7474
modifier = Modifier
7575
.padding(horizontal = 4.dp),
76-
text = (spaceVideo.duration * 1000L).formatMinSec(),
76+
text = (spaceVideo.duration * 1000L).formatHourMinSec(),
7777
style = MaterialTheme.typography.bodySmall,
7878
color = Color.White
7979
)

app/shared/src/main/kotlin/dev/aaa1115910/bv/entity/carddata/VideoCardData.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package dev.aaa1115910.bv.entity.carddata
22

3-
import dev.aaa1115910.bv.util.formatMinSec
3+
import dev.aaa1115910.bv.util.formatHourMinSec
44

55
data class VideoCardData(
66
val avid: Long,
@@ -25,7 +25,7 @@ data class VideoCardData(
2525
danmakuString = if (it >= 10000) "${it / 10000}" else "$it"
2626
}
2727
time?.let {
28-
timeString = if (it > 0) it.formatMinSec() else ""
28+
timeString = if (it > 0) it.formatHourMinSec() else ""
2929
}
3030
}
3131
}

app/shared/src/main/kotlin/dev/aaa1115910/bv/util/Extends.kt

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -81,18 +81,19 @@ fun Date.formatPubTimeString(context: Context = BVApp.context): String {
8181
}
8282
}
8383

84-
fun Long.formatMinSec(): String {
84+
fun Long.formatHourMinSec(): String {
8585
return if (this < 0L) {
8686
"..."
8787
} else {
88-
String.format(
89-
"%02d:%02d",
90-
TimeUnit.MILLISECONDS.toMinutes(this),
91-
TimeUnit.MILLISECONDS.toSeconds(this) -
92-
TimeUnit.MINUTES.toSeconds(
93-
TimeUnit.MILLISECONDS.toMinutes(this)
94-
)
95-
)
88+
val hours = TimeUnit.MILLISECONDS.toHours(this)
89+
val minutes = TimeUnit.MILLISECONDS.toMinutes(this) - TimeUnit.HOURS.toMinutes(hours)
90+
val seconds = TimeUnit.MILLISECONDS.toSeconds(this) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(this))
91+
92+
if (hours > 0) {
93+
String.format("%d:%02d:%02d", hours, minutes, seconds)
94+
} else {
95+
String.format("%02d:%02d", minutes, seconds)
96+
}
9697
}
9798
}
9899

app/shared/src/main/kotlin/dev/aaa1115910/bv/viewmodel/user/HistoryViewModel.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import dev.aaa1115910.bv.util.Prefs
1818
import dev.aaa1115910.bv.util.addWithMainContext
1919
import dev.aaa1115910.bv.util.fInfo
2020
import dev.aaa1115910.bv.util.fWarn
21-
import dev.aaa1115910.bv.util.formatMinSec
21+
import dev.aaa1115910.bv.util.formatHourMinSec
2222
import dev.aaa1115910.bv.util.toast
2323
import io.github.oshai.kotlinlogging.KotlinLogging
2424
import kotlinx.coroutines.Dispatchers
@@ -67,8 +67,8 @@ class HistoryViewModel(
6767
timeString = if (historyItem.progress == -1) context.getString(R.string.play_time_finish)
6868
else context.getString(
6969
R.string.play_time_history,
70-
(historyItem.progress * 1000L).formatMinSec(),
71-
(historyItem.duration * 1000L).formatMinSec()
70+
(historyItem.progress * 1000L).formatHourMinSec(),
71+
(historyItem.duration * 1000L).formatHourMinSec()
7272
)
7373
)
7474
)

app/shared/src/main/kotlin/dev/aaa1115910/bv/viewmodel/user/ToViewViewModel.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import dev.aaa1115910.bv.util.Prefs
1818
import dev.aaa1115910.bv.util.addWithMainContext
1919
import dev.aaa1115910.bv.util.fInfo
2020
import dev.aaa1115910.bv.util.fWarn
21-
import dev.aaa1115910.bv.util.formatMinSec
21+
import dev.aaa1115910.bv.util.formatHourMinSec
2222
import dev.aaa1115910.bv.util.toast
2323
import io.github.oshai.kotlinlogging.KotlinLogging
2424
import kotlinx.coroutines.Dispatchers
@@ -67,8 +67,8 @@ class ToViewViewModel(
6767
timeString = if (ToViewItem.progress == -1) context.getString(R.string.play_time_finish)
6868
else context.getString(
6969
R.string.play_time_history,
70-
(ToViewItem.progress * 1000L).formatMinSec(),
71-
(ToViewItem.duration * 1000L).formatMinSec()
70+
(ToViewItem.progress * 1000L).formatHourMinSec(),
71+
(ToViewItem.duration * 1000L).formatHourMinSec()
7272
)
7373
)
7474
)

app/tv/src/main/kotlin/dev/aaa1115910/bv/tv/screens/user/UserInfoScreen.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ import dev.aaa1115910.bv.util.Prefs
8888
import dev.aaa1115910.bv.util.fException
8989
import dev.aaa1115910.bv.util.fInfo
9090
import dev.aaa1115910.bv.util.fWarn
91-
import dev.aaa1115910.bv.util.formatMinSec
91+
import dev.aaa1115910.bv.util.formatHourMinSec
9292
import dev.aaa1115910.bv.util.toast
9393
import dev.aaa1115910.bv.viewmodel.UserViewModel
9494
import io.github.oshai.kotlinlogging.KotlinLogging
@@ -145,8 +145,8 @@ fun UserInfoScreen(
145145
timeString = if (historyItem.progress == -1) context.getString(R.string.play_time_finish)
146146
else context.getString(
147147
R.string.play_time_history,
148-
(historyItem.progress * 1000L).formatMinSec(),
149-
(historyItem.duration * 1000L).formatMinSec()
148+
(historyItem.progress * 1000L).formatHourMinSec(),
149+
(historyItem.duration * 1000L).formatHourMinSec()
150150
)
151151
)
152152
)

player/core/src/main/kotlin/dev/aaa1115910/bv/player/impl/exo/ExoMediaPlayer.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import androidx.media3.exoplayer.source.ProgressiveMediaSource
1717
import dev.aaa1115910.bv.player.AbstractVideoPlayer
1818
import dev.aaa1115910.bv.player.OkHttpUtil
1919
import dev.aaa1115910.bv.player.VideoPlayerOptions
20-
import dev.aaa1115910.bv.util.formatMinSec
20+
import dev.aaa1115910.bv.util.formatHourMinSec
2121

2222
@OptIn(UnstableApi::class)
2323
class ExoMediaPlayer(
@@ -163,7 +163,7 @@ class ExoMediaPlayer(
163163
get() {
164164
return """
165165
player: ${androidx.media3.common.MediaLibraryInfo.VERSION_SLASHY}
166-
time: ${currentPosition.formatMinSec()} / ${duration.formatMinSec()}
166+
time: ${currentPosition.formatHourMinSec()} / ${duration.formatHourMinSec()}
167167
buffered: $bufferedPercentage%
168168
resolution: ${mPlayer?.videoSize?.width} x ${mPlayer?.videoSize?.height}
169169
audio: ${mPlayer?.audioFormat?.bitrate ?: 0} kbps

player/mobile/src/main/kotlin/dev/aaa1115910/bv/player/mobile/SeekBar.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ import androidx.compose.ui.unit.dp
4343
import dev.aaa1115910.bv.player.seekbar.SeekBar
4444
import dev.aaa1115910.bv.player.seekbar.SeekBarThumb
4545
import dev.aaa1115910.bv.player.seekbar.SeekMoveState
46-
import dev.aaa1115910.bv.util.formatMinSec
46+
import dev.aaa1115910.bv.util.formatHourMinSec
4747
import kotlinx.coroutines.delay
4848
import kotlin.math.max
4949

@@ -179,7 +179,7 @@ private fun DraggableSeekPreview() {
179179
}
180180
)
181181
}
182-
Text("${position.formatMinSec()}/${duration.formatMinSec()}")
182+
Text("${position.formatHourMinSec()}/${duration.formatHourMinSec()}")
183183
}
184184
}
185185
}

0 commit comments

Comments
 (0)