该视频播放器基于Bilibili的开源项目ijkplayer做的,是在github上的demo基础上搭建了个播放界面,如果你之前有研究过这个demo代码,那你看这个库就非常简单了。至于还不知道ijkplayer这个开源库的话可以先去了解下,这应该是目前github最火的开源视频播放器了吧,网上对这个的介绍也很多这里就不讲这个了。
我从Bilibili客户端扒了好多图标来用,希望不要造成不好的影响,我也算个B站粉- -。下面先列一下目前集成的主要功能:
- 沉浸式全屏播放,隐藏状态栏和虚拟键如果有的话,用的时候有些需要注意的地方放后面说;
- 弹幕功能,包括发射弹幕和弹幕基本样式设置:大小、颜色和类型(顶部、底部和滚动弹幕),效果同Bilibili;
- 竖屏和横屏的切换,其实就是小屏和全屏的切换,提供了重力感应来切换竖横屏功能;
- 触屏控制,竖直方向左边控制亮度,右边控制声音,水平方向控制播放进度;
- 三指旋转缩放,当三个手指触屏时就可以进行视频界面的旋转缩放,效果同Bilibili;
- 视频源切换,可设置流畅、清晰、高清、超清和1080p等5种视频源;
- 视频宽高比例设置,包括16:9、4:3、视频内嵌填充界面和填充屏幕等4种;
- 记录上次播放进度的跳转功能;
- 其它的如截屏功能,电池电量显示,时间显示,播放常亮,跑马灯标题和锁屏处理;
Screenshot
动图显示比较慢,就传两张gif。
Usage
添加依赖:
- // 在项目根 build.gradle 添加如下:
- allprojects {
- repositories {
- ...
- maven { url 'https://jitpack.io' }
- }
- }
- // 添加依赖库:
- dependencies {
- compile 'com.github.Rukey7:IjkPlayerView:{lastest-version}'
- }
- <activity
- android:name=".IjkPlayerActivity"
- android:configChanges="orientation|keyboardHidden|screenSize"/>
布局:
- <com.dl7.player.media.IjkPlayerView
- android:id="@+id/player_view"
- android:layout_width="match_parent"
- android:layout_height="200dp"/>
代码中调用方式如下:
- public class IjkPlayerActivity extends AppCompatActivity {
- private IjkPlayerView mPlayerView;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_ijk_player);
- setSupportActionBar(mToolbar);
- // 以下为配置接口,选择需要的调用
- Glide.with(this).load(IMAGE_URL).fitCenter().into(mPlayerView.mPlayerThumb); // 显示界面图
- mPlayerView.init() // 初始化,必须先调用
- .setTitle("这是个标题") // 设置标题,全屏时显示
- .setSkipTip(1000*60*1) // 设置跳转提示
- .enableOrientation() // 使能重力翻转
- .setVideoPath(VIDEO_URL) // 设置视频Url,单个视频源可用这个
- .setVideoSource(null, VIDEO_URL, VIDEO_URL, VIDEO_URL, null) // 设置视频Url,多个视频源用这个
- .setMediaQuality(IjkPlayerView.MEDIA_QUALITY_HIGH) // 指定初始视频源
- .enableDanmaku() // 使能弹幕功能
- .setDanmakuSource(getResources().openRawResource(R.raw.comments)) // 添加弹幕资源,必须在enableDanmaku()后调用
- .start(); // 启动播放
- }
- @Override
- protected void onResume() {
- super.onResume();
- mPlayerView.onResume();
- }
- @Override
- protected void onPause() {
- super.onPause();
- mPlayerView.onPause();
- }
- @Override
- protected void onDestroy() {
- super.onDestroy();
- mPlayerView.onDestroy();
- }
- @Override
- public void onConfigurationChanged(Configuration newConfig) {
- super.onConfigurationChanged(newConfig);
- mPlayerView.configurationChanged(newConfig);
- }
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- if (mPlayerView.handleVolumeKey(keyCode)) {
- return true;
资源均来自第三方,谨慎下载,前往第三方网站下载