Android 使用VDPlayerSDK组件实现播放视频(二)
2016-04-20 12:57
549 查看
在上一篇Android 使用VDPlayerSDK组件实现播放视频(一)中介绍了项目的导入,简单的介绍了项目如何导入运行,其实参考作者的demo,就可以简单的制作出一个视频播放器出来。我在这再啰嗦一下把代码拷出来演示一下。
1、首先在布局文件中嵌入activity_play_movie_by_vdplayer
2、添加配置文件,在values中添加attrs.xml
3、layout中新建vd_player_control_layer_horizon.xml
4、vd_player_video_list_sport.xml
5、在drawable中新建item_track.xml
6、loading_iamge_progress.xml
7、最后在Activity中,修改代码
ok打完收工~建议多看看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
相关文章推荐
- Android 加密 MD5和Base64简单介绍
- Android屏幕适配全攻略
- Android 混淆打包时第三方jar包报错Unknown verification type [*] in stack map frame
- mac android studio 离线文档
- Android应用程序管理服务启动过程浅析(PackageManagerService)
- AndroidViewPager的使用(一)
- Android中的自定义注解(反射实现-运行时注解)
- Android倒计时案例展示
- 后台基于SSH框架开发的Android应用的前后台数据交互
- android studio 插件
- ViewPager实现Android向导页
- android 布局文件明明存在,却报错
- 百度地图android端URL.api直接展示地图处理
- OpenCV学习笔记(四)—— OpenCV for Android移植到Android平台
- Android开源项目合集
- Android源码解析合集
- Android框架知识合集
- Android使用MediaRecorder类进行录制视频
- Android 自定义View合集
- Android View的事件分发机制探索