软硬件环境
-
Macbook pro MGX 72
-
红米Note增强版
-
Android studio 1.0.2
概述
VideoView可以实现视频播放,结合MediaController也可以很好地实现播放控制,但是却无法全屏播放。本文介绍如何实现VideoView的全屏播放。
编写VideoView的子类
package com.macernow.djstava.videovideofullscreen;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.VideoView;
public class CustomVideoView extends VideoView {
public CustomVideoView(Context context){
super(context);
}
public CustomVideoView(Context context,AttributeSet attributeSet){
super(context,attributeSet);
}
public CustomVideoView(Context context,AttributeSet attributeSet,int defStyle){
super(context,attributeSet,defStyle);
}
@Override
protected void onMeasure(int widthMeasureSpec,int heightMeasureSpec){
int width = getDefaultSize(0,widthMeasureSpec);
int height = getDefaultSize(0,heightMeasureSpec);
setMeasuredDimension(width,height);
}
}
对应的xml文件
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.macernow.djstava.videoviewfullscreen.VODPlayerActivity">
<com.longjing.djstava.videoviewfullscreen.CustomVideoView
android:id="@+id/customVideoView"
android:layout_width="wrap_content"
android:layout_height="match_parent" />
</RelativeLayout>
对应Activity的操作
if (mediaController == null){
mediaController = new MediaController(VODPlayerActivity.this);
}
customVideoView = (CustomVideoView)findViewById(R.id.customVideoView);
try{
customVideoView.setMediaController(mediaController);
mediaController.setMediaPlayer(customVideoView);
customVideoView.setVideoURI(Uri.parse("http://192.168.31.246/video.mp4"));
}catch (Exception e){
Log.e(TAG,e.getMessage());
e.printStackTrace();
}
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
density = displayMetrics.density;
densityDPI = displayMetrics.densityDpi;
xdpi = displayMetrics.xdpi;
ydpi = displayMetrics.ydpi;
screenWidthDip = displayMetrics.widthPixels;
screenHeightDip = displayMetrics.heightPixels;
Log.e(TAG,"width is: " + screenWidthDip);
Log.e(TAG,"height is: " + screenHeightDip);
customVideoView.requestFocus();
customVideoView.onMeasure(screenWidthDip,screenHeightDip);
利用DisplayMedtris获取设备的屏幕大小,再通过自定义的VideoView去进行设置
最后介绍2个android下的2个小知识点
隐藏App的标题
修改AndroidManifest.xml中application标签里的theme属性,如下
android:theme="@style/Theme.AppCompat.NoActionBar" >
设置App为Launch
修改AndroidManifest.xml中的第一个activity,增加属性
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.HOME"/>