//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.example.surfaceview.MainActivity" >
<SurfaceView
android:id="@+id/sfv"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</RelativeLayout>
//主方法中的实现代码
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Environment;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;
public class MainActivity extends Activity {
//定义控件
private SurfaceView sfv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获得控件的id
sfv=(SurfaceView) findViewById(R.id.sfv);
//获得sfv对应的管理对象
SurfaceHolder holder=sfv.getHolder();
//设置控制器的回调监听
holder.addCallback(new Callback() {
private MediaPlayer player;
/**
* 画面销毁时触发此方法
*/
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
if (player!=null) {
player.stop();
}
}
/**
* 画面创建时调用此方法
*/
@Override
public void surfaceCreated(SurfaceHolder holder) {
player=new MediaPlayer();
try {
player.setDataSource(Environment.getExternalStorageDirectory().getPath()+"/xiao.3gp");
player.prepare();
player.setDisplay(holder);
player.start();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 画面改变时触发此方法
*/
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
}
});
}
}
运行的效果图: