天天看点

自定义videoview实现全屏播放

最近的项目中需要横屏播放视频的功能,本来是想通过设置videoview宽高的方式来实现,不过后来发现效果不佳,遂决定自定义一个videoview来解决这个问题。

代码如下:

自定义view:

package com.sac.widget;

import android.R.integer;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.VideoView;

public class MyVideoView extends VideoView {

	public MyVideoView(Context context, AttributeSet attrs, int defStyleAttr) {
		super(context, attrs, defStyleAttr);
		// TODO Auto-generated constructor stub
	}
	
   
	public MyVideoView(Context context, AttributeSet attrs) {
		super(context, attrs);
		// TODO Auto-generated constructor stub
	}
    
	public MyVideoView(Context context) {
		super(context);
		// TODO Auto-generated constructor stub
	}
	@Override
	protected void onMeasure(int widthMeasureSpec,int heightMeasureSpec){
		int width = getDefaultSize(0, widthMeasureSpec);
		int height = getDefaultSize(0, heightMeasureSpec);
		setMeasuredDimension(height, width);
	}

}
           

主界面:

if(getRequestedOrientation()!=ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){
	  setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
	 }
	    DisplayMetrics dm = new DisplayMetrics();
		getWindowManager().getDefaultDisplay().getMetrics(dm);
		
		width = dm.widthPixels;
		height = dm.heightPixels;
		Log.v("width", width+"");
		Log.v("height", height+"");
		
	    LayoutParams lp = videoView.getLayoutParams();
		lp.width = height;
		lp.height = width;
	    
		videoView.setLayoutParams(lp);
           

不要忘记在xml中引用自定义view。

这样就大功告成了