VideoView
常用方法:
方法名稱 |
描述 |
public void setVideoPath (String path) |
加載path路徑的文件 |
public void setVideoURI (Uri uri) |
加載uri所對應的視頻 |
public void start () |
開始 |
public void seekTo (int msec) |
定位 |
public void pause () |
暫停 |
public void stop() |
停止 |
public void setMediaController (MediaController controller) |
設置MediaController對象 |
關於MediaController類
這個類也是android.widget包下的,它是一個包含控件MediaPlayer多媒體播放的組件,它含有“播放”、暫停、”、“快倒”、“快進”和進步條的一個組件
構造方法
方法名稱 |
描述 |
public MediaController (Context context, AttributeSet attrs) |
通過Context對象和AttributeSet對象來創建MediaController對象 |
public MediaController (Context context, boolean useFastForward) |
通過Context對象和指定是否允許用戶控制進度。也就是是否有“快進”、“快退”按鈕。如果設置爲false就不會顯示顯示(如下圖片一) |
public MediaController (Context context) |
通過Context來創建MediaController對象 |
常用方法
方法名稱 |
描述 |
public void hide() |
設置隱藏MediaController |
public void show() |
設置顯示MediaController |
public void show(int timeout) |
設置MediaController顯示的時間以毫秒計算。如果設置爲0則一直到調用hide()方法才隱藏 |
public void setMediaPlayer (MediaController.MediaPlayerControl player) |
設置MediaPlayer使之與要綁定的控件綁定在一起其參數是一個MediaController.MediaPlayerControl 靜態接口的對象,(而VideoView是MediaController.MediaPlayerControl靜態接口的子實現類,這就使得我們可以更好的控制我們的視頻播放進度) |
圖片一
如果用public MediaController (Contextcontext, boolean useFastForward)構造方法來創建MediaController對象指定useFastForward=false就顯示成這樣的效果
實現效果:show和hide兩個按鈕用於控制MediaController的顯示與隱藏
編碼實現:
佈局文件代碼:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<VideoView
android:id="@+id/video"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
Activity代碼:
package com.jiahui.videoview;
import java.io.File;
import android.app.Activity;
import android.graphics.PixelFormat;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.MediaController;
import android.widget.Toast;
import android.widget.VideoView;
public class VideoViewDemoActivity extends Activity {
private VideoView videoView;
private Button btnHide, btnShow;
MediaController mediaController;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFormat(PixelFormat.TRANSLUCENT);
setContentView(R.layout.main);
videoView = (VideoView) this.findViewById(R.id.video);
btnShow = (Button) this.findViewById(R.id.btnShow);
btnHide = (Button) this.findViewById(R.id.btnHide);
// 使用這種方式創建MediaController將不會顯示“快進”和“快退”兩個按鈕
// mediaController = new MediaController(this,false);
mediaController = new MediaController(this);
File videoFile = new File("/mnt/sdcard/movie.3gp");
// 先判斷這個文件是否存在
if (videoFile.exists()) {
System.out.println("文件存在");
videoView.setVideoPath(videoFile.getAbsolutePath());
System.out.println(videoFile.getAbsolutePath());
// 設置VideView與MediaController建立關聯
videoView.setMediaController(mediaController);
// 設置MediaController與VideView建立關聯
mediaController.setMediaPlayer(videoView);
// 讓VideoView獲取焦點
videoView.requestFocus();
// 開始播放
videoView.start();
} else {
Toast.makeText(this, "文件不存在", Toast.LENGTH_LONG).show();
}
btnShow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mediaController != null) {
// 使用0的話就一直顯示直到調用hide()
mediaController.show(0);
}
}
});
btnHide.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mediaController != null) {
mediaController.hide();
}
}
});
}
}
如需轉載引用請註明出處:http://blog.csdn.net/jiahui524