Android VideoView 全屏
阿新 • • 發佈:2018-12-31
使用VideoView播放視訊時,總是不能進行全屏播放,即使是將VideoView的layout_width和layout_height設定為match_parent也不行,網上找了找問題的解決辦法,發現是videoview原始碼裡的onMeasure方法為了使視訊保持原有的長寬比,將長和寬根據控制元件大小按比例縮放,這就導致有時候長度到達控制元件大小,而寬度沒有或者寬度到達控制元件大小,而長度沒有,會有一定的黑邊。這時我們只需新寫一個MyVideoView類繼承自VideoView類,重寫onMeasure方法即可
MyVideoView.java
package com.example.recorder;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.VideoView;
public class MyVideoView extends VideoView {
public MyVideoView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public MyVideoView(Context context, AttributeSet attrs) {
super (context, attrs);
}
public MyVideoView(Context context) {
super(context);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// TODO Auto-generated method stub
int width = getDefaultSize(0, widthMeasureSpec);
int height = getDefaultSize(0 , heightMeasureSpec);
setMeasuredDimension(width, height);
}
}
這樣只需控制MyVideoView控制元件大小就可以實現全屏播放了
注:這樣會改變視訊本身的長寬比,使得播放出的視訊效果不好。不改變長寬比導致視訊有黑邊還是全屏改變長寬比導致效果不好,具體的選擇還要根據具體應用。