Android 使用VDPlayerSDK组件实现播放视频(二)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/CutelittleBo/article/details/51199895

在上一篇Android 使用VDPlayerSDK组件实现播放视频(一)中介绍了项目的导入,简单的介绍了项目如何导入运行,其实参考作者的demo,就可以简单的制作出一个视频播放器出来。我在这再啰嗦一下把代码拷出来演示一下。

1、首先在布局文件中嵌入activity_play_movie_by_vdplayer

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res/com.xxxx.xxx" //需要注意这里,res后面要填写自己程序的包名!!!重要的事情打3个感叹号
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <com.sina.sinavideo.sdk.VDVideoView
        android:id="@+id/vd_video_view"
        android:layout_width="match_parent"
        android:layout_height="240dp"
        android:layout_alignParentTop="true"
        android:background="#000000"
        app:layerAttrs="@array/only_horizon" >
    </com.sina.sinavideo.sdk.VDVideoView>

</RelativeLayout>

2、添加配置文件,在values中添加attrs.xml

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

    <!-- 只横不竖 -->
    <array name="only_horizon">
        <item>@array/sv_videoview_layer_controllayer2</item>
    </array>
    <!-- 只有横屏没有竖屏 -->
    <array name="sv_videoview_layer_controllayer2">
        <item>@null</item>
        <item>@layout/vd_player_control_layer_horizon</item>
    </array>

</resources>

3、layout中新建vd_player_control_layer_horizon.xml

<?xml version="1.0" encoding="utf-8"?>
<com.sina.sinavideo.sdk.VDVideoViewLayer
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res/com.sangbo.testproject"//注意更改包名
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <!-- 顶部控制栏 -->

    <com.sina.sinavideo.sdk.container.VDVideoControlTopContainer
        android:id="@+id/container_top"
        android:layout_width="match_parent"
        android:layout_height="44.5dp"
        android:layout_alignParentTop="true"
        android:background="@drawable/play_ctrl_title_bg"
        android:gravity="center_vertical"
        android:orientation="horizontal"
        android:visibility="gone"
        app:useStatusBar="true" >

        <com.sina.sinavideo.sdk.widgets.VDVideoBackButton
            android:id="@+id/backButton1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp" />

        <com.sina.sinavideo.sdk.widgets.VDVideoTitleTextView
            android:id="@+id/titleButton1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="10dp"
            android:layout_weight="1"
            android:textColor="@android:color/white"
            android:textSize="16sp" />

        <com.sina.sinavideo.sdk.widgets.VDVideoDecodingButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="@dimen/controller_title_share_btn_marginRight"
            android:padding="@dimen/btn_padding" />

        <com.sina.sinavideo.sdk.widgets.playlist.VDVideoRelatedButton
            android:id="@+id/listButton1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="@dimen/controller_title_share_btn_marginRight"
            android:padding="@dimen/btn_padding" />
    </com.sina.sinavideo.sdk.container.VDVideoControlTopContainer>

    <!-- 底部控制栏 -->

    <com.sina.sinavideo.sdk.container.VDVideoControlBottomContainer
        android:id="@+id/container_bottom"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="@drawable/play_ctrl_bottom_bg"
        android:orientation="horizontal"
        android:visibility="gone" >

        <com.sina.sinavideo.sdk.widgets.VDVideoPlayButton
            android:id="@+id/playerBtn2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <com.sina.sinavideo.sdk.widgets.VDVideoTimeTextView
            android:id="@+id/timeTextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="10dp" />

        <com.sina.sinavideo.sdk.widgets.VDVideoPlaySeekBar
            android:id="@+id/playerseek2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="@dimen/controller_bottom_seekbar_marginLeft"
            android:layout_marginRight="@dimen/controller_bottom_seekbar_marginRight"
            android:layout_weight="1"
            android:maxHeight="@dimen/controller_bottom_seekbar_maxHeight"
            android:minHeight="@dimen/controller_bottom_seekbar_minHeight"
            android:paddingBottom="5dp"
            android:paddingTop="5dp"
            android:progressDrawable="@drawable/play_seekbar_color_bg"
            android:thumb="@drawable/play_ctrl_sound_ball"
            android:thumbOffset="0dip" />

        <com.sina.sinavideo.sdk.widgets.VDVideoSoundSeekButton
            android:id="@+id/soundSeek1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            app:soundSeekContainer="@+id/seekContainer1" />
    </com.sina.sinavideo.sdk.container.VDVideoControlBottomContainer>

    <!-- 中间的控制区 -->

    <com.sina.sinavideo.sdk.container.VDVideoControlPanelContainer
        android:id="@+id/controlLayout1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@id/container_bottom"
        android:layout_below="@id/container_top"
        app:gestureLevel="gestureLevelSingleTap|gestureLevelHorizonScroll|gestureLevelVerticalScroll|gestureLevelDoubleTap" />

    <!-- 播放列表 -->

    <com.sina.sinavideo.sdk.widgets.playlist.VDVideoPlayListContainer
        android:id="@+id/playlist1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@id/container_bottom"
        android:layout_below="@id/container_top"
        android:gravity="right"
        android:orientation="vertical"
        android:visibility="gone" >

        <RelativeLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#80000000"
            android:orientation="vertical" >

            <ImageView
                android:id="@+id/line"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:scaleType="fitXY"
                android:src="@drawable/item_track"
                android:visibility="gone" />

            <com.sina.sinavideo.sdk.widgets.playlist.VDVideoPlayListView
                android:id="@+id/play_list_view"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:background="#80000000"
                android:cacheColorHint="@android:color/transparent"
                android:descendantFocusability="blocksDescendants"
                android:fadingEdge="none"
                android:scrollbars="none"
                android:visibility="visible"
                app:listItem="@layout/vd_player_video_list_sport" >
            </com.sina.sinavideo.sdk.widgets.playlist.VDVideoPlayListView>
        </RelativeLayout>
    </com.sina.sinavideo.sdk.widgets.playlist.VDVideoPlayListContainer>

    <!-- 声音控制以及进度控制 -->

    <com.sina.sinavideo.sdk.container.VDVideoControlSoundSeekBarContainer
        android:id="@id/seekContainer1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_marginRight="@dimen/controller_right_volumn_seekbar_marginRight"
        android:background="@drawable/play_ctrl_volume_progressbar_bg"
        android:orientation="vertical"
        android:paddingLeft="0dp"
        android:paddingRight="0dp"
        android:visibility="gone" >

        <com.sina.sinavideo.sdk.widgets.VDVideoSoundSeekBar
            android:layout_width="wrap_content"
            android:layout_height="200dp"
            android:layout_centerInParent="true"
            android:layout_gravity="center_horizontal"
            android:maxHeight="@dimen/controller_right_volumn_seekbar_maxHeight"
            android:minHeight="@dimen/controller_right_volumn_seekbar_minHeight"
            android:progressDrawable="@drawable/play_seekbar_color_bg"
            android:thumb="@drawable/play_ctrl_sound_ball"
            android:thumbOffset="0dip"
            android:visibility="visible" />
    </com.sina.sinavideo.sdk.container.VDVideoControlSoundSeekBarContainer>

    <com.sina.sinavideo.sdk.container.VDVideoControlContainer
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:orientation="vertical" >

        <com.sina.sinavideo.sdk.widgets.VDVideoTimeTextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:visibility="gone" />
    </com.sina.sinavideo.sdk.container.VDVideoControlContainer>

    <com.sina.sinavideo.sdk.container.VDVideoControlSoundContainer
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:orientation="vertical"
        android:visibility="gone" >

        <com.sina.sinavideo.sdk.widgets.VDVideoSoundSeekImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <com.sina.sinavideo.sdk.widgets.VDVideoSoundSeekPercentView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </com.sina.sinavideo.sdk.container.VDVideoControlSoundContainer>

    <com.sina.sinavideo.sdk.container.VDVideoControlLightingContainer
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:orientation="vertical"
        android:visibility="gone" >

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/gestrue_brightness" />

        <com.sina.sinavideo.sdk.widgets.VDVideoLightingPercentView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:textColor="@android:color/white"
            android:textSize="20sp" />
    </com.sina.sinavideo.sdk.container.VDVideoControlLightingContainer>

    <com.sina.sinavideo.sdk.widgets.VDVideoDoubleTapPlayView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:visibility="gone" />

    <com.sina.sinavideo.sdk.widgets.VDVideoLoadingProgress
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:indeterminateDrawable="@drawable/loading_iamge_progress"
        android:indeterminateDuration="1000"
        android:visibility="gone" />

    <com.sina.sinavideo.sdk.container.VDVideoControlProgressContainer
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:background="@drawable/play_seek_flag_bg"
        android:gravity="center_vertical"
        android:paddingRight="5dp"
        android:visibility="gone" >

        <com.sina.sinavideo.sdk.widgets.VDVideoProgressIndicaterView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/play_ctrl_seek_forward" />

        <com.sina.sinavideo.sdk.widgets.VDVideoTimeTextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp" />
    </com.sina.sinavideo.sdk.container.VDVideoControlProgressContainer>

    <com.sina.sinavideo.sdk.widgets.VDVideoTipLayout
        android:id="@id/tipLayout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/container_top"
        android:layout_centerHorizontal="true"
        android:background="#0078db"
        android:gravity="center_vertical"
        android:orientation="horizontal"
        android:padding="@dimen/media_controller_tip_padding"
        android:visibility="gone" />

    <com.sina.sinavideo.sdk.widgets.VDVideoIndicaterLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:visibility="gone" />

    <com.sina.sinavideo.sdk.widgets.VDVideoErrorLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:visibility="gone" />

</com.sina.sinavideo.sdk.VDVideoViewLayer>

4、vd_player_video_list_sport.xml

5、在drawable中新建item_track.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape android:shape="rectangle"
  xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#0078db" />
    <size android:height="1.0px" android:width="2.0dip" />
</shape>

6、loading_iamge_progress.xml

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

<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@mipmap/ic_launcher"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="360" />

7、最后在Activity中,修改代码

package com.sangbo.testproject.sinaPlay;

import android.app.Activity;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.KeyEvent;
import android.view.ViewGroup;

import com.sangbo.testproject.R;
import com.sina.sinavideo.sdk.VDVideoExtListeners.OnVDVideoPlaylistListener;
import com.sina.sinavideo.sdk.VDVideoView;
import com.sina.sinavideo.sdk.data.VDVideoInfo;
import com.sina.sinavideo.sdk.data.VDVideoListInfo;
import com.sina.sinavideo.sdk.widgets.playlist.VDVideoPlayListView;

public class PlayMovieByVDPlayerActivity extends Activity
        implements OnVDVideoPlaylistListener {

    private VDVideoView mVDVideoView = null;
    private final static String TAG = "Test1Activity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_play_movie_by_vdplayer);
        mVDVideoView = (VDVideoView) findViewById(R.id.vd_video_view);
        mVDVideoView.setVDVideoViewContainer((ViewGroup) mVDVideoView.getParent());

        VDVideoListInfo infoList = new VDVideoListInfo();
        VDVideoInfo info = new VDVideoInfo();
        info.mTitle = "测试视频1";
        info.mPlayUrl = "http://movie.ks.js.cn/flv/other/1_0.mp4";
        infoList.addVideoInfo(info);

        info = new VDVideoInfo();
        info.mTitle = "测试视频2";
        info.mPlayUrl = "http://k.youku.com/player/getFlvPath/sid/444807687772012b669d2_01/st/mp4/fileid/0300080100564F0EDEEE2F06EA71FA2046FDE8-5A8A-D211-2867-3FB4124F0167?K=7cdf26bae902d647282af6d9&hd=1&myp=0&ts=198&ypp=0&ctype=12&ev=1&token=8898&oip=1931268481&ep=diaQEkmKUMYH4iTdiD8bNSrkfSMNXP4J9h%2BFidJjALshTuzJmUulsujFTIlCEIxodSNwYenxr9aRHjUcYfUyoRkQq0ypOPri9vbk5a4ltpQBZB1AcszRs1SWSzn5";
        infoList.addVideoInfo(info);

        info = new VDVideoInfo();
        info.mTitle = "测试视频3";
        info.mPlayUrl = "http://dlqncdn.miaopai.com/stream/MVaux41A4lkuWloBbGUGaQ__.mp4";
        infoList.addVideoInfo(info);

        mVDVideoView.setPlaylistListener(this);

        // 简单方式处理的视频列表
        VDVideoPlayListView listView = (VDVideoPlayListView) findViewById(R.id.play_list_view);
        if (listView != null) {
            listView.onVideoList(infoList);
        }
        mVDVideoView.open(PlayMovieByVDPlayerActivity.this, infoList);
        mVDVideoView.play(0);

    }

    @Override
    protected void onResume() {
        super.onResume();
        mVDVideoView.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
        mVDVideoView.onPause();
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (!mVDVideoView.onVDKeyDown(keyCode, event)) {
            return super.onKeyDown(keyCode, event);
        }
        return true;
    }

    @Override
    protected void onStop() {
        super.onStop();
        mVDVideoView.onStop();
    }

    @Override
    protected void onDestroy() {
        mVDVideoView.release(false);
        super.onDestroy();
    }

    @Override
    public void onPlaylistClick(VDVideoInfo info, int p) {
        // TODO Auto-generated method stub
        mVDVideoView.play(p);
    }
}

ok打完收工~建议多看看demo

猜你喜欢

转载自blog.csdn.net/CutelittleBo/article/details/51199895
今日推荐