React Native跳转+播放(其实只想吐槽)

 React Native跳转+播放(其实只想吐槽)_第1张图片   React Native跳转+播放(其实只想吐槽)_第2张图片     

 React Native跳转+播放(其实只想吐槽)_第3张图片

上面的效果实现后,我真的,我透。。。什么鬼玩意组建啊。想说一下问题,我本来将跳转实现放一个项目test2,播放又放另一个项目test3中,这两者在不同的项目中都能正常实现,但是当组合在一起时,准确的说,只要在跳转项目里面下载播放组建,我都没放任何播放的代码,这个项目直接歇菜。我尝试不同的项目,大多数项目,只要下载了播放的组件,那个项目就直接废了。。我他喵。。。

唉,要么react native迟早要被淘汰,要么过一阵子我歇菜,看来我不适合学代码。

组件:

跳转需要的:

1.使用以下命令安装react-navigation: npm install --save react-navigation

2.npm install react-native-reanimated react-native-gesture-handler react-native-screens react-native-safe-area-context @react-native-community/masked-view

3.执行命令安装react-navigation-stack: npm install react-navigation-stack @react-native-community/masked-view

播放需要的组件:

1.npm install @react-native-community/slider --save

2.npm install react-native-video --save

 

写下来是放代码:

app.js

import React, { Component } from 'react';
import { 
  StyleSheet, 
  View,
} from 'react-native';

import StackNavDemo from './StackNavDemo';

export default class App extends Component{

 render() {
    return (
      
      
    
     );
  }
}

const styles = StyleSheet.create({
   container: {
     flex: 1,
   }
 });

StackNavDemo.js

import React from "react";
import { 
  View, 
  Text, 
  Button 
} from "react-native";
import { createAppContainer } from 'react-navigation';
import { createStackNavigator } from 'react-navigation-stack';
import DetailsScreen from './DetailsScreen'

//跳转页面知识(单页)
//要显示的首页内容
 class HomeScreen extends React.Component { 
    render() {
      return (
     
        
          Home Screen
          

 

DetailsScreen.js

import React from "react";
import { 
  View, 
  Text, 
  Button 
} from "react-native";
import VideoPlayer from './VideoPlayer';

export default class DetailsScreen extends React.Component {
    render() {
        const {params} = this.props.navigation.state;
      return (  
        
         
          { params.msg }
          

 

VideoPlayer.js

import React, { Component } from 'react';
import { 
  StyleSheet, 
  TouchableOpacity,
  TouchableWithoutFeedback,
  View,
  Image,
  Text
} from 'react-native';

import Video from 'react-native-video';
import Slider from '@react-native-community/slider'

export default class VideoPlayer extends Component {
  constructor(props) {
    super(props);
    this.state={
      paused: true,  //是否暂停音频播放
      playImg: require('./Video/video.png'), //播放/暂停图片
      currentTime: 0.0,  //当前播放时间
      duration: 0.0,  //当前音频的总时长
    }
    this.video;  //获取Video组件,ref相当于id
  }

  render() {
    return (
      
        
          

        
        
          
            
          
         
          
            {this.formatMediaTime(this.state.currentTime)}
          
          
          

          
            
              {this.formatMediaTime(this.state.duration)}
            
          
        
       
    );
  }

  onValueChange = (value) => {
    //当进度条被拖动或点击时,将音频跳转到对应点继续播放
    this.video.seek(value);
  }

  onLoad = (data) => {
    //音频加载完成时获取时长,作为进度条的最大值
    this.setState({ duration: data.duration });
  };

  onProgress = (data) => {
    //每隔一段时间获取音频播放进度,更新进度条
    this.setState({ currentTime: data.currentTime });
  };

  onEnd = () => {
    //当音频播放完毕,将进度条和音频归0
    this.setState({ 
      paused: true, 
      currentTime: 0,
      playImg: require('./Video/video_play.png')
    });
    this.video.seek(0);
  };

  playAndPaused = () => {
    //点击暂停/播放按钮,暂停/播放音频
    this.setState({ paused: !this.state.paused });

    if (this.state.paused) {
      this.setState({playImg: require('./Video/video_pause.png')});

    } else {
      this.setState({playImg: require('./Video/video_play.png')});
    }
  }

  //将单位为s的音乐播放时间格式化为0:00
  formatMediaTime = (duration) => {
    let min = Math.floor(duration / 60);
    let second = Math.floor(duration - min * 60);
    min = min >= 10 ? min : "0" + min;
    second = second >= 10 ? second : "0" + second;
    return min + ":" + second;
  }
}

const styles = StyleSheet.create({
  time: {
    fontSize: 20,
    color: '#fff'
  },
  control: {
    height: 60, 
    flexDirection: 'row', 
    alignItems: 'center', 
    position: 'absolute', 
    top: 200, 
    zIndex: 5, 
    width: '100%',
    margin: 10}
});

求求哪位神仙告诉我应该怎么做吧,我受不了了。。实在难受这个播放组建。

你可能感兴趣的:(React,Native测试项目,上课的作业)