을 시작할 수 있어야, 그것은해야 후자를 비교적 쉽게 확장하고 자신의 청취자를 추가 할 수 있습니다. 우리가 우리 자신의 수신기를 연결 할 수있는 유일한 차이는 존재로, 일반 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. 자바를 알기 전까지는 기다릴 수 없으며 액션 스크립트 같은 다른 것들도 알고 있습니다. – Ronnie
도움이 된 것을 기쁘게 생각합니다. :) 그런데,'super'에 대한 호출은 대개 메소드를 오버라이드하는 것과 함께 수행됩니다. 재정의하면 기본적으로 기본/수퍼/부모 클래스의 메서드를 다시 정의합니다. 이러한 오버라이드 된 메소드에서'super'를 호출하면 기능을 유지할 수 있습니다. 이는 기능을 추가하는 것이 목표 인 경우 수행하려는 작업입니다. 때로는 * 기능을 대체하기를 원할 수도 있습니다.이 경우'super '를 호출하지 않아도 원하는 결과를 얻을 수 있습니다. –
괜찮 았던 것 같아서 매우 유용하다고 생각했습니다. 감사합니다. – Ronnie