jiecaovideoplayer的简单使用
来源:互联网 发布:淘宝运费模板怎么写 编辑:程序博客网 时间:2024/05/22 12:21
前段时间由于项目需要用到类似于今日头条的视频播放器,实现在线播放,边缓存边播放,当然也可以播放本地文件,如下图:
一、项目引入:
1、添加类库
compile 'fm.jiecao:jiecaovideoplayer:4.8.3'
compile 'com.github.bumptech.glide:glide:3.7.0'
2、添加布局
<fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard android:id="@+id/player_list_video" android:layout_width="match_parent" android:layout_height="220dp" />
3、下面就是我所说的通过设置视频地址、缩略图地址、标题等几行代码快速实现视频的播放啦
JCVideoPlayerStandard player = (JCVideoPlayerStandard) findViewById(R.id.player_list_video);boolean setUp = player.setUp("http://gslb.miaopai.com/stream/ed5HCfnhovu3tyIQAiv60Q__.mp4", JCVideoPlayer.SCREEN_LAYOUT_LIST, "");if (setUp) { Glide.with(MainActivity.this).load("http://a4.att.hudong.com/05/71/01300000057455120185716259013.jpg").into(player.thumbImageView);}
4、在Activity中
@Overridepublic void onBackPressed() { if (JCVideoPlayer.backPress()) { return; } super.onBackPressed();}@Overrideprotected void onPause() { super.onPause(); JCVideoPlayer.releaseAllVideos();}
5、还有一点不要忘记哦,要添加权限滴:
<!--联网权限-->
<uses-permission android:name="android.permission.INTERNET" />
下面我们来看看我们运行效果:
这里写图片描述
二、如何使用jiecaovideoplayer播放本地视频
注意:jiecaovideoplayer支持file:///开头的文件播放,但是不支持assets或者raw目录下的视频,assets下的视频要先复制到本地路径才能播放,至于怎么监听播放完全呢,要继承JCvideoPlayerStandard 复写onAutoCOmplete函数
三、模拟用户点击开始按钮,直接进入全屏
//直接进入全屏
player.startFullscreen(this, JCVideoPlayerStandard.class, videoUrl, "");
//模拟用户点击开始按钮,NORMAL状态下点击开始播放视频,播放中点击暂停视频
player.startButton.performClick();
我把代码都贴出来吧:
import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import com.bumptech.glide.Glide;import com.xianxiaexample.myapplication.R;import fm.jiecao.jcvideoplayer_lib.JCVideoPlayer;import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard;public class MainActivity extends AppCompatActivity { private String videoUrl = "http://gslb.miaopai.com/stream/ed5HCfnhovu3tyIQAiv60Q__.mp4"; private JCVideoPlayerStandard player; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); player = (JCVideoPlayerStandard) findViewById(R.id.player_list_video); boolean setUp = player.setUp(videoUrl, JCVideoPlayer.SCREEN_LAYOUT_LIST, ""); if (setUp) { Glide.with(MainActivity.this).load("http://a4.att.hudong.com/05/71/01300000057455120185716259013.jpg").into(player.thumbImageView); } //直接进入全屏 player.startFullscreen(this, JCVideoPlayerStandard.class, videoUrl, ""); //模拟用户点击开始按钮,NORMAL状态下点击开始播放视频,播放中点击暂停视频 player.startButton.performClick(); } @Override public void onBackPressed() { if (JCVideoPlayer.backPress()) { return; } super.onBackPressed(); } @Override protected void onPause() { super.onPause(); JCVideoPlayer.releaseAllVideos(); }}
四、下面回到我们的主题上,实现仿今日头条的视频播放
1、VideoActivity.java
import android.graphics.Rect;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.widget.AbsListView;import android.widget.ListView;import com.xianxiaexample.myapplication.R;import java.util.ArrayList;import fm.jiecao.jcvideoplayer_lib.JCVideoPlayer;import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard;public class VideoActivity extends AppCompatActivity { private String videoUrl = "http://gslb.miaopai.com/stream/ed5HCfnhovu3tyIQAiv60Q__.mp4"; private ListView listView; private ArrayList<String> datas; private JCVideoPlayerStandard currPlayer; private VideoAdapter adapter; private AbsListView.OnScrollListener onScrollListener; private int firstVisible;//当前第一个可见的item private int visibleCount;//当前可见的item个数 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_video); listView = (ListView) findViewById(R.id.listview); initDatas(); initListener(); } private void initDatas() { datas = new ArrayList<String>(); for (int i = 0; i < 20; i++) { datas.add(videoUrl); } adapter = new VideoAdapter(VideoActivity.this, datas, R.layout.item_video); listView.setAdapter(adapter); } /** * 滑动监听 */ private void initListener() { onScrollListener = new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { switch (scrollState) { case AbsListView.OnScrollListener.SCROLL_STATE_FLING: break; case AbsListView.OnScrollListener.SCROLL_STATE_IDLE: //滑动停止自动播放视频 autoPlayVideo(view); break; case AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL: break; } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if (firstVisible == firstVisibleItem) { return; } firstVisible = firstVisibleItem; visibleCount = visibleItemCount; } }; listView.setOnScrollListener(onScrollListener); } /** * 滑动停止自动播放视频 */ private void autoPlayVideo(AbsListView view) { for (int i = 0; i < visibleCount; i++) { if (view != null && view.getChildAt(i) != null && view.getChildAt(i).findViewById(R.id.player_list_video) != null) { currPlayer = (JCVideoPlayerStandard) view.getChildAt(i).findViewById(R.id.player_list_video); Rect rect = new Rect(); //获取当前view 的 位置 currPlayer.getLocalVisibleRect(rect); int videoheight = currPlayer.getHeight(); if (rect.top == 0 && rect.bottom == videoheight) { if (currPlayer.currentState == JCVideoPlayer.CURRENT_STATE_NORMAL || currPlayer.currentState == JCVideoPlayer.CURRENT_STATE_ERROR) { currPlayer.startButton.performClick(); } return; } } } //释放其他视频资源 JCVideoPlayer.releaseAllVideos(); } @Override public void onBackPressed() { if (JCVideoPlayer.backPress()) { return; } super.onBackPressed(); } @Override protected void onPause() { super.onPause(); JCVideoPlayer.releaseAllVideos(); }}
在我们滑动的时候,jiecaovideoplayer会自动停止正在播放的视频,这里面我还添加了一个功能,就是监听当滑动停止的时候自动播放下一个视频
2、VideoAdapter.java
import android.content.Context;import com.bumptech.glide.Glide;import com.xianxiaexample.myapplication.R;import com.zhy.adapter.abslistview.CommonAdapter;import com.zhy.adapter.abslistview.ViewHolder;import java.util.List;import fm.jiecao.jcvideoplayer_lib.JCVideoPlayer;import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard;/** * @author: lijuan * @description: 适配器 * @date: 2016-12-04 * @time: 17:04 */public class VideoAdapter extends CommonAdapter<String> { private Context mContext; public VideoAdapter(Context context, List<String> datas, int layoutId) { super(context, layoutId, datas); this.mContext = context; } @Override protected void convert(ViewHolder viewHolder, String url, int position) { JCVideoPlayerStandard player = viewHolder.getView(R.id.player_list_video); if (player != null) { player.release(); } boolean setUp = player.setUp(url, JCVideoPlayer.SCREEN_LAYOUT_LIST, ""); if (setUp) { Glide.with(mContext).load("http://a4.att.hudong.com/05/71/01300000057455120185716259013.jpg").into(player.thumbImageView); } }}
这里的适配器,是万能的Adapter,所以我们还需添加这个库的引用
compile 'com.zhy:base-adapter:3.0.3'
3、item_video.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"><fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard android:id="@+id/player_list_video" android:layout_width="match_parent" android:layout_height="190dp" /><RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingBottom="8dp" android:paddingTop="8dp"><ImageView android:id="@+id/img_video_icon" android:layout_width="30dp" android:layout_height="30dp" android:layout_marginLeft="12dp" android:src="@mipmap/icon_default_head" /><TextView android:id="@+id/tv_video_userName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="12dp" android:layout_toRightOf="@id/img_video_icon" android:text="空城旧梦" /><TextView android:id="@+id/tv_video_comment" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="12dp" android:drawablePadding="4dp" android:drawableLeft="@mipmap/icon_comment" android:text="21" android:textSize="12sp" /><TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginRight="12dp" android:layout_toLeftOf="@id/tv_video_comment" android:text="3万次播放" /></RelativeLayout></LinearLayout>
4、activity_video.xml
<?xml version="1.0" encoding="utf-8"?><ListView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" />
下面我们看看最终的效果
这里写图片描述
阅读全文
0 0
- jiecaovideoplayer的简单使用
- jiecaovideoplayer的简单使用
- jiecaovideoplayer的简单使用
- jiecaovideoplayer的简单使用
- jiecaovideoplayer最简单的使用
- JieCaoVideoPlayer的使用
- JieCaoVideoPlayer 使用的坑
- 视频-jiecaovideoplayer的使用
- jiecaovideoplayer 播放视频,暂停继续 简单的使用 (一)
- 视频播放---jiecaovideoplayer的使用
- 视频播放---jiecaovideoplayer的使用
- 视频播放---jiecaovideoplayer的使用
- 视频播放---jiecaovideoplayer的使用
- Android简单集成Jiecaovideoplayer
- JieCaoVideoPlayer,视频播放,极简单
- JieCaoVideoPlayer
- Android JieCaoVideoPlayer 使用入门指南
- Android 视频播放器之JieCaoVideoPlayer的简单实用以及自定义UI
- Android native层事件传递 1
- 蓝牙耳机电量显示
- java23种设计模式(2)-责任链模式
- Flex中的DataGrid
- hdu 1060(思维)
- jiecaovideoplayer的简单使用
- filebeat传输到logstash通过ssl加密
- CentOS搭建SVN服务器
- Python入门与进阶学习笔记之分支、循环、条件与枚举
- 钉钉生成jspapi token出现IP地址不在白名单的解决办法
- 常用css样式
- Java8,第 5 部分
- 命名管道(FIFO)
- FPGA-TFT(VGA)驱动代码分享