最近面试,面试官问了我关于以前做过的项目的问题,我居然可耻的忘记了,因此有必要重新梳理一下。
达成这个目标大概分为三个步骤:1.创建一个悬浮窗口;2.将vitamio的videoview嵌进去;3.播放视频。
首先,先创建一个悬浮窗口(部分参数已经声明过了):
- private void createFloatView() {
-
- wmParams = new WindowManager.LayoutParams();
- mWindowManager = (WindowManager) getApplication().getSystemService(
- Context.WINDOW_SERVICE);
-
- wmParams.type = LayoutParams.TYPE_PHONE;
- wmParams.format = PixelFormat.RGBA_8888;
- wmParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE;
-
-
- wmParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
- wmParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
-
- LayoutInflater inflater = this.getLayoutInflater();
-
- mFloatLayout = (LinearLayout) inflater.inflate(R.layout.float_layout,
- null);
-
- mWindowManager.addView(mFloatLayout, wmParams);
这样的话一个悬浮窗口就创建完毕了!
接下来,就是要将videoview嵌套进去了,首先,将事先准备好的vitamio工程文件(可在官网上下载)设置为Android Library,引入到项目中。(两者在同一目录下)
然后开始嵌套(把这段代码写到createFloatView()中):
- mFloatView = (VideoView) mFloatLayout.findViewById(R.id.vv2);
- pb = (ProgressBar) mFloatLayout.findViewById(R.id.probar);
-
- Vitamio.initialize(Read.this);
- mFloatView.setMediaController(new io.vov.vitamio.widget.MediaController(Read.this));
-
-
- mFloatView.setOnBufferingUpdateListener(new OnBufferingUpdateListener() {
-
- @Override
- public void onBufferingUpdate(MediaPlayer arg0, int percent) {
-
-
- }
- });
- mFloatView.setOnInfoListener(new OnInfoListener() {
-
- @Override
- public boolean onInfo(MediaPlayer arg0, int what, int extra) {
-
- switch (what) {
- case MediaPlayer.MEDIA_INFO_BUFFERING_START:
- if (mFloatView.isPlaying()) {
- mFloatView.pause();
- pb.setVisibility(View.VISIBLE);
-
- }
- break;
- case MediaPlayer.MEDIA_INFO_BUFFERING_END:
- mFloatView.start();
- pb.setVisibility(View.GONE);
-
- break;
- case MediaPlayer.MEDIA_INFO_DOWNLOAD_RATE_CHANGED:
-
- break;
- }
- return true;
-
- }
-
- });
最后一步,就是使用这个方法了!
- createFloatView();
- mFloatView.setVideoURI(Uri.parse(path);