맞춤 동영상 플레이어를 만들려고합니다. VideoView를 사용하여 동영상을 표시하고 MediaController를 사용하여 비디오를 제어합니다.미디어 컨트롤러의 탭 표면을 변경하는 방법은 무엇입니까?
사용자가 화면을 탭하면 헤더와 미디어 컨트롤러가 3 초 동안 표시됩니다 (사용자가 계속 작업을 수행하는 경우에는 더 이상 표시됨). 그리고 사용자가 비디오를 다시 탭하면 두 요소가 숨겨져 야합니다.
화면의 첫 번째 탭에서 예상대로 머리글과 컨트롤러가 표시됩니다. 내 문제는 내가 화면에서 다시 탭하려고하면 그것은 컨트롤러를 숨기고 헤더가 사라지지 않는다는 것입니다. 내 질문은 어떻게 이것을 변경하는 것입니다 그래서 MediaController 자체 탭 표면을 정의하기 때문에 이것이라고 생각하십니까? MediaController를 코딩하지 않고 MediaController 객체의 탭 표면을 변경하는 방법은 무엇입니까?
private static final int ELAPSED_TIME = 2000;
private boolean visible;
@Override
public boolean onTouch(View v, MotionEvent event) {
// onTap
if (event.getAction() == MotionEvent.ACTION_DOWN) {
// Supprime le callback pour cacher les contrôles s'il y en avait un en cours
hideHandler.removeCallbacks(onElapsedTime);
// Affiche les contrôles s'il n'était pas déjà affichés
if (!visible) {
header.setVisibility(View.VISIBLE);
controller.show(0); // 0 -> Visible jusqu'à ce que hide() soit appelé
visible = true;
}
else {
header.setVisibility(View.GONE);
controller.hide();
visible = false;
}
// Défini un runnable a exécuter après ELAPSED_TIME pour cacher le header et le contrôleur
hideHandler.postDelayed(onElapsedTime, ELAPSED_TIME);
}
return true;
}
private Runnable onElapsedTime = new Runnable() {
public void run() {
header.setVisibility(View.GONE);
controller.hide();
visible = false;
}
};
[MediaController.java] 복사 (http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.3_r1/android/widget/MediaController.java# MediaController), & 동작을 좋아하지 않는 경우 & 수정할 수 없습니다. 보이는 컨트롤러는 아마도 모든 터치 이벤트를 소비하고 어떻게 든 터치 처리에 연결해야합니다. – zapl
나는 당신이 말한 것을 시도하고 싶었지만 많은 의존성을 필요로하므로 좋은 생각이라고 생각하지 않습니다. Mediacontroller와 동시에 숨기고 보여줄 헤더를 추가하고 싶지만 분명 쉽지는 않습니다. – Fr4nz
MediaController.java는 내부 API를 사용합니다. 따라서 모든 의존성 파일을 가져 오기위한 옵션조차도 아닙니다. PolicyManager.makeNewWindow (mContext)없이 MediaController의 "floating window"기능을 다시 만드는 방법을 찾아야합니다. – MaximumGoat