mirror of
https://github.com/tapframe/NuvioStreaming.git
synced 2026-01-11 20:10:25 +00:00
refactor(player): enhance video controls with modern streaming style
- Moved inline styles to playerStyles.ts for better maintainability - Redesigned player controls for better user experience: - Enhanced skip buttons with rotate animations and semi-transparent backgrounds - Enlarged center play/pause button with improved visibility - Optimized touch targets and spacing for better interaction - Standardized button dimensions and layout Files changed: - src/components/player/controls/PlayerControls.tsx - src/components/player/utils/playerStyles.ts
This commit is contained in:
parent
e2719c373d
commit
698456c205
4 changed files with 34 additions and 9 deletions
1
.vscode/settings.json
vendored
1
.vscode/settings.json
vendored
|
|
@ -1,2 +1,3 @@
|
|||
{
|
||||
"java.compile.nullAnalysis.mode": "automatic"
|
||||
}
|
||||
|
|
@ -726,7 +726,7 @@ public class ReactExoplayerView extends FrameLayout implements
|
|||
|
||||
DefaultRenderersFactory renderersFactory =
|
||||
new DefaultRenderersFactory(getContext())
|
||||
.setExtensionRendererMode(DefaultRenderersFactory.EXTENSION_RENDERER_MODE_PREFER)
|
||||
.setExtensionRendererMode(DefaultRenderersFactory.EXTENSION_RENDERER_MODE_OFF)
|
||||
.setEnableDecoderFallback(true)
|
||||
.forceEnableMediaCodecAsynchronousQueueing();
|
||||
|
||||
|
|
|
|||
|
|
@ -148,15 +148,29 @@ export const PlayerControls: React.FC<PlayerControlsProps> = ({
|
|||
|
||||
{/* Center Controls (Play/Pause, Skip) */}
|
||||
<View style={styles.controls}>
|
||||
{/* Left Skip Button */}
|
||||
<TouchableOpacity onPress={() => skip(-10)} style={styles.skipButton}>
|
||||
<Ionicons name="play-back" size={24} color="white" />
|
||||
<View style={{ transform: [{ rotate: '-90deg' }] }}>
|
||||
<Ionicons name="reload-outline" size={28} color="white" />
|
||||
</View>
|
||||
<Text style={styles.skipText}>10</Text>
|
||||
</TouchableOpacity>
|
||||
|
||||
{/* Play/Pause Button */}
|
||||
<TouchableOpacity onPress={togglePlayback} style={styles.playButton}>
|
||||
<Ionicons name={paused ? "play" : "pause"} size={40} color="white" />
|
||||
<Ionicons
|
||||
name={paused ? "play" : "pause"}
|
||||
size={46}
|
||||
color="white"
|
||||
style={{ opacity: 0.9 }}
|
||||
/>
|
||||
</TouchableOpacity>
|
||||
|
||||
{/* Right Skip Button */}
|
||||
<TouchableOpacity onPress={() => skip(10)} style={styles.skipButton}>
|
||||
<Ionicons name="play-forward" size={24} color="white" />
|
||||
<View style={{ transform: [{ rotate: '90deg' }] }}>
|
||||
<Ionicons name="reload-outline" size={28} color="white" />
|
||||
</View>
|
||||
<Text style={styles.skipText}>10</Text>
|
||||
</TouchableOpacity>
|
||||
</View>
|
||||
|
|
|
|||
|
|
@ -100,28 +100,38 @@ export const styles = StyleSheet.create({
|
|||
controls: {
|
||||
position: 'absolute',
|
||||
flexDirection: 'row',
|
||||
justifyContent: 'center',
|
||||
justifyContent: 'space-between',
|
||||
alignItems: 'center',
|
||||
gap: 40,
|
||||
left: 0,
|
||||
right: 0,
|
||||
top: '50%',
|
||||
transform: [{ translateY: -30 }],
|
||||
paddingHorizontal: 40,
|
||||
zIndex: 1000,
|
||||
},
|
||||
playButton: {
|
||||
justifyContent: 'center',
|
||||
alignItems: 'center',
|
||||
padding: 10,
|
||||
justifyContent: 'center',
|
||||
backgroundColor: 'rgba(255, 255, 255, 0.2)',
|
||||
borderRadius: 40,
|
||||
padding: 15,
|
||||
width: 80,
|
||||
height: 80,
|
||||
},
|
||||
skipButton: {
|
||||
flexDirection: 'column',
|
||||
alignItems: 'center',
|
||||
justifyContent: 'center',
|
||||
backgroundColor: 'rgba(0, 0, 0, 0.5)',
|
||||
borderRadius: 8,
|
||||
padding: 12,
|
||||
width: 60,
|
||||
},
|
||||
skipText: {
|
||||
color: 'white',
|
||||
fontSize: 12,
|
||||
marginTop: 2,
|
||||
fontWeight: '600',
|
||||
marginTop: 4,
|
||||
},
|
||||
bottomControls: {
|
||||
gap: 12,
|
||||
|
|
|
|||
Loading…
Reference in a new issue