开源视频播放器IjkPlayer使用记录之(二)--自定义的mediaController实现。
2016-10-25 09:52
555 查看
1. 例子中的controller实现
首先先来看一下Ijkplayer example中的mediaController实现。代码在example中的widget.media的AndroidMediaController中实现。例子中的功能主要是支持将顶部的toolbar和MediaController绑定在一起,一起show/hide.这段代码可以自行阅读,不是本文要说的内容。2. 自定义的mediaController实现
Android中的mediaController支持的api非常少,非常不方便定制。这里就是移植源码的内容做自定义的mediaController。源码在:android.widget.MediaController.可以清楚的看到MediaController实际上一个FrameLayout。那么如何移植呢?<span style="font-size:14px;">private void initFloatingWindow() { mWindowManager = (WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE); mWindow = new PhoneWindow(mContext);</span>可以将文件copy到自己的目录下,在sdk24下,没法直接创建PhoneWindow实例。以下是stackOverflow上搜索到的方法:
<span style="font-size:14px;"> String phone_window_calss = "com.android.internal.policy.impl.PhoneWindow"; Class phoneWindowClass = null; try { phoneWindowClass = Class.forName(phone_window_calss); Constructor constructor = phoneWindowClass.getDeclaredConstructor(new Class[]{Context.class}); mWindow = (Window) constructor.newInstance(mContext); } catch (Exception e) { }</span>其他的内容可以基本不变。
protected View makeControllerView() {LayoutInflater inflate = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);mRoot = inflate.inflate(R.layout.custum_media_controller, null);<span style="color:#ff6600;">//修改该文件变更布局。</span>initControllerView(mRoot);return mRoot;}
private void initControllerView(View v)在该函数中定义控件和绑定相关的监听事件。播放相关的回调沿用原有的系统方法比较好,这边主要是做一些自己定制的内容,相对来说还是比较容易实现的。以上就是简单的自定义mediaController,供参考。
相关文章推荐
- 开源视频播放器IjkPlayer使用记录之(三)--播放视频从上次播放的时间点播放。
- 开源视频播放器IjkPlayer使用记录之一--demo的使用及View的简要介绍
- Swift中使用MPMoviePlayerController实现自定义视频播放器界面
- Android中使用SurfaceView+MediaPlayer+自定义的MediaController实现自定义的视屏播放器
- Oracle学习记录之使用自定义函数和触发器实现主键动态生成
- 自定义注解和aop结合使用---自定义日志记录的实现
- 使用自定义注解+Spring AOP 实现日志记录
- Oracle学习记录之使用自定义函数和触发器实现主键动态生成
- spring mvc 使用拦截器interceptor和自定义Log类实现持久层记录日志
- 使用代理模式扩展logback,实现自定义的日志记录功能
- 使用自定义的item、Adapter和AsyncTask、第三方开源框架PullToRefresh联合使用实现自定义的下拉列表(从网络加载图片显示在item中的ImageView)
- B站开源播放框架ijkplayer(iOS版)使用教程
- Oracle学习记录——使用自定义函数和触发器实现主键动态生成
- 使用自定义的item、Adapter和AsyncTask、第三方开源框架PullToRefresh联合使用实现自定义的下拉列表(从网络加载图片显示在item中的ImageView)
- iOS开发笔记--开源播放框架ijkplayer(iOS版)使用教程
- SpringBoot使用自定义注解+拦截器 实现日志记录
- 两行代码搞定iOS自定义HUD风格动画弹窗(支持选择记录) - SKChoosePopView的使用和实现思路
- 微软企业库5.0 学习之路——第九步、使用PolicyInjection模块进行AOP—PART4——建立自定义Call Handler实现用户操作日志记录
- 开源播放框架ijkplayer(iOS版)使用教程
- [EntLib]微软企业库5.0 学习之路——第九步、使用PolicyInjection模块进行AOP—PART4——建立自定义Call Handler实现用户操作日志记录