可以滑動的視訊播放器(VideoView)
阿新 • • 發佈:2019-01-24
專案中經常用到一個視訊播放器下面有一個評論列表,或者有一些其他的列表。一般情況下,安卓不鼓勵視訊滾動的。但是偶爾遇到這種要求又不得不做。很不幸我就遇到了。
round1
樓主把VideoView放到了ScrollView,同時把VideoView的高設定成了wrap_content,問題出現了。VideoView不可見了。後來才發現VideoView必須設定成固定寬高才會出現。
round2
成功在ScrollView中放入了VideoView,但是滑動時,會有黑邊,好醜。而且滑動不夠流暢。百度發現給VideoView設定一個透明色的背景就好了。流暢了很多,但是仍然不是很好,勉強能滿足樓主的要求。
之後執行不久,又發現一個問題。這裡交代下,我們的應用上面的視訊的高度是要變化的,樓主就用了強制佈局,得到視訊的第一幀圖片,然後按照比例設定VideoView的寬高。
RelativeLayout.LayoutParams linearParams = (RelativeLayout.LayoutParams) videoView.getLayoutParams(); WindowManager wm = this.getWindowManager(); //得到螢幕寬 int width = wm.getDefaultDisplay().getWidth(); //得到視訊放大比例 double問題出現了,當視訊的高度小於一整螢幕,listView又特別長的時候,滑動會出現一條線。沒錯那條線就是VideoViewbili = (double) width / mVideoWidth; //把視訊寬設定為螢幕寬 linearParams.width = width;// 控制元件的寬強制設成 //得到視訊放大後的高 int height = (int) (mVideoHeight * bili); //設定視訊的寬高 linearParams.height = height; CHBApplication.Log(height + ""); videoView.setLayoutParams(linearParams);
round 3
樓主在這裡卡了好久。思來想去,可以滑動的控制元件只有ScrollView,ListView。然後就改用多item的listView。問題又出現了,滑動起來流暢了很多。但是,因為複用的關係,當VideoView滑出螢幕是,視訊播放暫停。再滑回來,視訊重頭播放。不復用,又感覺應用效能不夠好。
round 4
突然想到,是因為複用導致的暫停,那我給listView添加個頭佈局不就好了?想到就做。
完美。滑動沒黑線,滑動起來也流暢了很多。就是樓主想要的效果。
這裡樓主給大家上傳一個addHeadView和多item佈局的原始碼,在一個程式碼了,大家把註釋開啟就可以分別看到兩種效果。但是視訊連線沒有。大家只要放進去視訊連線就可以看到效果了。當然不放連線也能看到效果。但是看不到播放而已。