#Android笔记#利用第三方播放器vitamio实现悬浮播放效果

最近面试,面试官问了我关于以前做过的项目的问题,我居然可耻的忘记了,因此有必要重新梳理一下。


达成这个目标大概分为三个步骤: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);


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值