主MainActivity的布局配置文件
这是activity_main.xml。主要出现两个按钮,按钮一通过mediaplayer播放,按钮二通过videoview播放
xmlns:tools="外链网址已屏蔽"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.shao.MainActivity" >
android:id="@+id/btnSurfaceView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Start SurfaceView" />
android:id="@+id/btnVideoView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Start VideoView" />
主Activity。用于控制两个按钮,设置布局
package com.shao;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
public Button btnSurfaceView;
public Button btnVideoView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.btnSurfaceView = (Button) findViewById(R.id.btnSurfaceView);
this.btnVideoView = (Button) findViewById(R.id.btnVideoView);
this.btnSurfaceView.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, SurfaceViewActivity.class);
startActivity(intent);
}
});
this.btnVideoView.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, VideoViewActivity.class);
startActivity(intent);
}
});
}
}
1、通过MediaPlayer
package com.shao;
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;
public class SurfaceViewActivity extends Activity {
private SurfaceView surfaceView;
private SurfaceHolder surfaceHolder;
private Callback SurfaceHolderCallbac = new Callback() {
private MediaPlayer mediaPlay;
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
mediaPlay.release();
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
mediaPlay = MediaPlayer.create(SurfaceViewActivity.this, R.raw.jikexueyuan);
try {
mediaPlay.prepare();
} catch(Exception e) {
e.printStackTrace();
}
mediaPlay.setDisplay(surfaceHolder);
mediaPlay.start();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
surfaceView = new SurfaceView(this);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(SurfaceHolderCallbac);
setContentView(surfaceView);
}
}
需要实例CallBack属性,并且覆盖里面的方法。主要的内容还是在onCreate里面,addCallback加入了这个SurfaceHolderCallbac。
2、通过VideoView
package com.shao;
import android.app.Activity;
import android.os.Bundle;
import android.widget.MediaController;
import android.widget.VideoView;
public class VideoViewActivity extends Activity {
public VideoView videoView;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
videoView = new VideoView(this);
videoView.setVideoPath("/storage/sdcard1/jikexueyuan.mp4");
videoView.setMediaController(new MediaController(this));
videoView.start();
setContentView(videoView);
}
}
没啥好注意的,就是把这个VideoView 设置了setContentView里面。然后调用了一个setMediaController,这是一个系统自带的播放控制组件。