您的位置:首页 > 移动开发 > Android开发

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

2016-04-20 12:57 549 查看
在上一篇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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: