MVP视频播放器基本架构(二)

2. MVP视频播放器基本架构

2.1 组成部分:

       显示:视频的加载页面,以及直接反馈给用户的视频内容

       控制:包括开始停止按键,播放进度条,以及一些附加功能,如分享,下载等

       手势:滑动手指调节音量和进度

      

2.2  代码结构:

       主要由四个文件组成:

      VipVideoPlayer.java

      VipVideoView.java 

      VipMediaControllerBottom.java

      VipMediaControllerTop.java


      VipVideoPlayer.java 就是我们看到的整个视频播放器内容,包括视频的显示和一些控制的组件,也通过这个类的onTouchEvent处理手势滑动事件。

      这个类是个FrameLayout,视频初始和加载的图片,以及重播图片也是在这个视图中。

      VipVideoView.java 视频播放器的核心类,这里使用到了Vitamio多媒体框架。这个类继承了SurfaceView,不仅用作视频显示,而且处理了视频相关事件的分发,为外部调         用提供了相应接口。

      VipMediaControllerBottom.java  图中下半部分内容。

      VipMediaControllerTop.java  图中上半部分内容,这部分的显示和隐藏和Bottom绑定在一起。

      

        因为我们在使用的时候都是在布局文件中添加了vip_video_player.xml,所以我们优先了解一下它的组成。

        这是vip_video_player.xml的内容:

<?xml version="1.0" encoding="utf-8"?>

<com.mobilead.mvp.player.VipVideoPlayer 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    >

    <com.mobilead.mvp.player.VipVideoView
        android:id="@+id/vip_videoview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:layout_gravity="center"/>
	<include
	    layout="@layout/vip_media_controller_top"		
		android:id="@+id/controller_top"
	    android:layout_width="match_parent"
	    android:layout_height="wrap_content"
	    android:layout_gravity="top"
	    android:visibility="gone"/>
    <LinearLayout
    	android:id="@+id/load"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
	    android:layout_gravity="center"        
        android:orientation="vertical">

<!-- 		<ProgressBar android:id="@+id/load_progress" 
		    android:layout_width="wrap_content" 
		    android:layout_height="wrap_content"
		    android:indeterminateDrawable="@drawable/loading_big"
        	android:indeterminateDuration="800"
        	android:indeterminateBehavior="repeat"
		    android:layout_gravity="center"/>
 -->
 		<include
 		    layout="@layout/mediaplayer_progress"
 		    android:id="@+id/load_progress"    
 		    android:layout_gravity="center"
 		    />
<!--         <TextView
            android:id="@+id/load_rate"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
			android:textAppearance="?android:attr/textAppearanceMedium"            
    		android:textColor="@android:color/white"                 
            android:text="" />	 -->
            
    </LinearLayout>
	    
	<!-- <ImageView android:id="@+id/playPauseIcon"  
		android:layout_width="wrap_content"  
	    android:layout_height="wrap_content" 
	    android:layout_gravity="center" 
	    android:src="@drawable/play_btn_play_big_detail"
	    android:visibility="gone"/> -->
	<include layout="@layout/vip_replay"
    	android:id="@+id/replay"     	
    	android:visibility="gone"/>
	<include layout="@layout/vip_media_ad_time"
    	android:id="@+id/adtime" 
    	android:visibility="gone"/>

	<include
	    layout="@layout/vip_media_controller_bottom"		
		android:id="@+id/controller_bottom"
	    android:layout_width="match_parent"
	    android:layout_height="wrap_content"
	    android:layout_gravity="bottom"
	    android:visibility="gone"/>
</com.mobilead.mvp.player.VipVideoPlayer>
        id:

        vip_videoview就是前面说的VipVideoView

        controller_top对应vip_media_controller_top.xml

        load中有一个mediaplayer_progress布局,这个布局就是视频播放器中间的一块内容,包含了视频log,播放进度条和加载百分比

        replay也是一个布局文件,它是视频播放完成之后显示在中间的一个带有重播按键的一个view

        attime 广告现实的剩余时间,暂时不用

        controller_bottom 对应vip_media_controller_bottom.xml


       

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值