最近面试,面试官问了我关于以前做过的项目的问题,我居然可耻的忘记了,因此有必要重新梳理一下。
达成这个目标大概分为三个步骤:1.创建一个悬浮窗口;2.将vitamio的videoview嵌进去;3.播放视频。
首先,先创建一个悬浮窗口(部分参数已经声明过了):
private void createFloatView() {
wmParams = new WindowManager.LayoutParams();// 得到WindowManager.LayoutParams对象,用来设置窗口的参数
mWindowManager = (WindowManager) getApplication().getSystemService(
Context.WINDOW_SERVICE);// 获得windowmanager对象
wmParams.type = LayoutParams.TYPE_PHONE;// 设置这个view即将放置的位置
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();
// 将layout绑定到窗口
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);//使用vitamio项目必须加上这句初始化的语句
mFloatView.setMediaController(new io.vov.vitamio.widget.MediaController(Read.this));//设置viodeview的控制器
mFloatView.setOnBufferingUpdateListener(new OnBufferingUpdateListener() {
@Override
public void onBufferingUpdate(MediaPlayer arg0, int percent) {
// TODO Auto-generated method stub
// loadRateView.setText(percent + "%");
}
});
mFloatView.setOnInfoListener(new OnInfoListener() {
@Override
public boolean onInfo(MediaPlayer arg0, int what, int extra) {
// TODO Auto-generated method stub
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);