标签:
主MainActivity的布局配置文件
这是activity_main.xml。主要出现两个按钮,按钮一通过mediaplayer播放,按钮二通过videoview播放
<LinearLayout 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" android:orientation="vertical" tools:context="com.shao.MainActivity" > <Button android:id="@+id/btnSurfaceView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Start SurfaceView" /> <Button android:id="@+id/btnVideoView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Start VideoView" /> </LinearLayout>
主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,这是一个系统自带的播放控制组件。
标签:
原文地址:http://my.oschina.net/0x4ad/blog/374583