1. 程式人生 > >Android VideoView 全屏

Android VideoView 全屏

使用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控制元件大小就可以實現全屏播放了

注:這樣會改變視訊本身的長寬比,使得播放出的視訊效果不好。不改變長寬比導致視訊有黑邊還是全屏改變長寬比導致效果不好,具體的選擇還要根據具體應用。