xref: /MusicFree/src/pages/musicDetail/components/bottom/seekBar.tsx (revision d84e0f28a520cbaefef752f0fc28e0378e11f72d)
1import React, { useState } from 'react';
2import {StyleSheet, Text, View} from 'react-native';
3import rpx from '@/utils/rpx';
4import Slider from '@react-native-community/slider';
5import MusicQueue from '@/common/musicQueue';
6import timeformat from '@/utils/timeformat';
7import { fontSizeConst } from '@/constants/uiConst';
8import ThemeText from '@/components/themeText';
9import useTextColor from '@/hooks/useTextColor';
10import Color from 'color';
11
12interface ISeekBarProps {}
13export default function SeekBar(props: ISeekBarProps) {
14  const progress = MusicQueue.useProgress(800);
15  const [tmpProgress, setTmpProgress] = useState<number | null>(null);
16  const textColor = useTextColor();
17
18  return (
19    <View style={style.wrapper}>
20      <Text  style={style.text}>{timeformat(tmpProgress ?? progress.position)}</Text>
21      <Slider
22        style={style.slider}
23        minimumTrackTintColor={'#cccccc'}
24        maximumTrackTintColor={'#999999'}
25        thumbTintColor={'#dddddd'}
26        minimumValue={0}
27        maximumValue={progress.duration}
28        onValueChange={(val)=>{
29            setTmpProgress(val);
30        }}
31        onSlidingComplete={(val) => {
32            setTmpProgress(null);
33            MusicQueue.seekTo(val);
34        }}
35        value={progress.position}></Slider>
36      <Text style={style.text}>{timeformat(progress.duration)}</Text>
37    </View>
38  );
39}
40
41const style = StyleSheet.create({
42  wrapper: {
43    width: rpx(750),
44    height: rpx(40),
45    justifyContent: 'center',
46    alignItems: 'center',
47    flexDirection: 'row',
48  },
49  slider: {
50    width: rpx(550),
51    height: rpx(40),
52  },
53  text: {
54    fontSize: fontSizeConst.smaller,
55    includeFontPadding: false,
56    color: '#cccccc'
57  }
58});
59