Android开发之JieCaoVideoPlayer功能的使用方法

在Android开发中,有些技术人员可能对于JieCaoVideoPlayer功能不知道如何使用,那么接下来郑州app开发公司燚轩科技就来跟大家分析一下该功能的使用方法吧。

compile 'fm.jiecao:jiecaovideoplayer:5.5'

<activity android:name=".JieCaoVideoActivity"

android:configChanges="orientation|screenSize|keyboardHidden"

android:screenOrientation="portrait"></activity>

 

 

这种方法小屏切换到大屏是创建了两个播放器,或者说是创建了两个TextureView的容器,从小到大的时候在Activity中创建了一个全屏的播放器容器,并把当前的视频渲染器(TextureView)和监听器都给赋值过去了,由于使用了TextureView,所以在滚动控件中使用也不会用果冻效果,可以说是正真意义的完美的播放器全屏方案。大小切换由于TextureView的容器换了,所以中间会有很短时间的黑屏,但是可以忽略

/**

* 小屏窗口切换为全屏播放

*/

public void startWindowFullscreen() {

Log.i(TAG, "startWindowFullscreen " + " [" + this.hashCode() + "] ");

hideSupportActionBar(getContext());

/**activity的content layout**/

ViewGroup vp = (ViewGroup) (JCUtils.scanForActivity(getContext())).findViewById(Window.ID_ANDROID_CONTENT);

/**通过id找到播放器自己本身**/

View old = vp.findViewById(FULLSCREEN_ID);

/**如果在设置全屏之前activity的content layout中本来就存在播放器就先移除**/

if (old != null) {

vp.removeView(old);

}

if (textureViewContainer.getChildCount() > 0) {

textureViewContainer.removeAllViews();

}

try {

Constructor constructor = (Constructor) JCVideoPlayer.this.getClass().getConstructor(Context.class);

JCVideoPlayer jcVideoPlayer = constructor.newInstance(getContext());

jcVideoPlayer.setId(FULLSCREEN_ID);

/**获取屏幕的宽高**/

WindowManager wm = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);

int w = wm.getDefaultDisplay().getWidth();

int h = wm.getDefaultDisplay().getHeight();

FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(h, w);

lp.setMargins((w - h) / 2, -(w - h) / 2, 0, 0);

vp.addView(jcVideoPlayer, lp);

jcVideoPlayer.setUp(url, JCVideoPlayerStandard.SCREEN_WINDOW_FULLSCREEN, objects);

jcVideoPlayer.setUiWitStateAndScreen(currentState);

/**小窗口和全屏的切换是创建了两个播放器,之间的衔接全靠这个方法**/

jcVideoPlayer.addTextureView();

jcVideoPlayer.setRotation(90);

final Animation ra = AnimationUtils.loadAnimation(getContext(), R.anim.start_fullscreen);

jcVideoPlayer.setAnimation(ra);

/**监听器的替换**/

JCVideoPlayerManager.setLastListener(this);

JCVideoPlayerManager.setListener(jcVideoPlayer);

} catch (InstantiationException e) {

e.printStackTrace();

} catch (Exception e) {

e.printStackTrace();

}

}

参照JCVideoPlayerSimple,JCVideoPlayerStandard,JCVideoPlayerStandardWithShareButton

继承JCVideoPlayer,JCVideoPlayer中包含所有关于播放的代码,不包含任何UI的代码

getLayoutId();布局的id

Override init(Context context);这里初始化自定义控件

Override setStateAndUi(int state);是重点,自定义各个状态的UI,如果在其他地方修改UI应该保持谨慎

Override onTouch(),onClick();如果有需要

在自定义UI之后,应该依然按照README.md中的4步骤来调用播放器

关于控件id的问题,在Base simple ui example中的所有最基础的id是写死在JCVideoPlayer中的,下面的控件id已经findViewById过了不需要再findViewById

控件 id

开始按钮 start

全屏按钮 fullscreen

进度条 progress

总共时间 total

下方layout layout_bottom

上方layout layout_top

SurfaceView的容器 surface_container

如果想快速的集成视频播放功能,建议参照JCVideoPlayerStandardWithShareButton来做,它继承JCVideoPlayerStandard,JCVideoPlayerStandard的目标是和今日头条的细节保持一致

如果想完全自定义UI,参照JCVideoPlayerStandard,如果还是存在有些疑惑的话,可以咨询郑州app开发公司燚轩科技。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章