如果你在組合使用MediaController
用VideoView
,它應該是相對容易擴展後者並添加自己的偵聽器。然後
定製VideoView會是這個樣子在其最基本的形式:
public class CustomVideoView extends VideoView {
private PlayPauseListener mListener;
public CustomVideoView(Context context) {
super(context);
}
public CustomVideoView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomVideoView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public void setPlayPauseListener(PlayPauseListener listener) {
mListener = listener;
}
@Override
public void pause() {
super.pause();
if (mListener != null) {
mListener.onPause();
}
}
@Override
public void start() {
super.start();
if (mListener != null) {
mListener.onPlay();
}
}
public static interface PlayPauseListener {
void onPlay();
void onPause();
}
}
使用它等同於使用常規VideoView
,唯一的區別是,我們現在可以連接我們自己的監聽器到它。
// Some other code above...
CustomVideoView cVideoView = (CustomVideoView) findViewById(R.id.custom_videoview);
cVideoView.setPlayPauseListener(new CustomVideoView.PlayPauseListener() {
@Override
public void onPlay() {
System.out.println("Play!");
}
@Override
public void onPause() {
System.out.println("Pause!");
}
});
cVideoView.setMediaController(new MediaController(this));
cVideoView.setVideoURI(...);
// or
cVideoView.setVideoPath(...);
// Some other code below...
最後,您還可以聲明它在你的XML佈局,它充氣(如上圖所示) - 只要確保你使用<package_name>.CustomVideoView
。例如:
<mh.so.CustomVideoView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/custom_videoview" />
天才!謝謝你,先生,這工作完美。 +50給你。我不能等到我知道Java以及我知道其他事情如動作腳本。 – Ronnie
很高興有幫助。 :)順便說一下,調用'super'通常與重寫方法一起完成。通過重寫,你基本上重新定義了基類/超類/父類的方法。如果你用這種重寫的方法調用'super',你會保留它的功能,如果你的目標是*添加*功能,這就是你想要做的。有時候你可能想要*替換*功能,在這種情況下,你可以通過不調用'super'來獲得期望的結果。 –
好吧,這是我認爲和非常有用的知道,謝謝 – Ronnie