안 드 로 이 드 비디오 재생
흔 한 문제
1 재생 중 플레이어 의 가로 화면 전환 과 플레이어 의 문안 에 표 시 된 레이아웃 변 화 를 어떻게 처리 합 니까?
activity 에 설정
android:configChanges="orientation|screenSize"
이렇게 회전 중 에 activity 는 재 구축 되 지 않 습 니 다.재 작성 시스템 방법
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
initVideoLandLayout();
} else {
initVideoPortLayout();
}
}
new Config.orientation 을 판단 하여 현재 가로 화면 인지 세로 화면 인지 판단 합 니 다.이것 은 동 영상 을 보 는 과정 에서 가로 화면 인지 세로 화면 인지 판단 합 니 다.우리 문 이 처음에 동 영상 을 재생 할 때 도 판단 할 수 있 습 니 다.구체 적 인 처리 방법 은?
private void initVideoPlayerLayout() {
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
width = dm.widthPixels;
heigh = dm.heightPixels;
if (width / heigh > 0) { //
initVideoLandLayout();
fullscreen = true;
}
if (width / heigh == 0) { //
initVideoPortLayout();
}
}
플레이어 의 레이아웃 을 구체 적 으로 바 꿀 때 우 리 는 동적 으로 바 꿀 수 있다.
private void initVideoPortLayout() {
RelativeLayout.LayoutParams videoLp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
videoLp.addRule(RelativeLayout.CENTER_IN_PARENT);
videoView.setLayoutParams(videoLp);
videoView.start();
RelativeLayout.LayoutParams hotelInfoLp = new RelativeLayout.LayoutParams(DeviceInfoUtil.getPixelFromDip(200), DeviceInfoUtil.getPixelFromDip(55));
hotelInfoLp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
hotelInfoLp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
hotelInfoLp.rightMargin = DeviceInfoUtil.getPixelFromDip(8);
hotelInfoLp.bottomMargin = DeviceInfoUtil.getPixelFromDip(90);
mHotelInfoLayout.setLayoutParams(hotelInfoLp);
}
세로 처리 입 니 다.
private void initVideoLandLayout() {
RelativeLayout.LayoutParams layoutParams =
new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT);
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
videoView.setLayoutParams(layoutParams);
RelativeLayout.LayoutParams hotelInfoLp = new RelativeLayout.LayoutParams(DeviceInfoUtil.getPixelFromDip(200), DeviceInfoUtil.getPixelFromDip(55));
hotelInfoLp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
hotelInfoLp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
hotelInfoLp.rightMargin = DeviceInfoUtil.getPixelFromDip(8);
hotelInfoLp.bottomMargin = DeviceInfoUtil.getPixelFromDip(95);
mHotelInfoLayout.setLayoutParams(hotelInfoLp);
}
가로 처리 입 니 다.우리 문 은 시스템 의 videoView 컨트롤 이 자체 적 으로 재생,일시 정지 등 진도 가 있다 는 것 을 알 고 있 습 니 다.이것 은 MediaContronler 입 니 다.우리 가 손 으로 클릭 할 때 진도 가 표시 되 고 손 이 화면 을 떠 날 때 표시 되 지 않 습 니 다.이것 은 videoView 의 방법 입 니 다.
@Override
public boolean onTouchEvent(MotionEvent ev) {
if (isInPlaybackState() && mMediaController != null) {
toggleMediaControlsVisiblity();
}
return false;
}
내 려 다 보다
private void toggleMediaControlsVisiblity() {
if (mMediaController.isShowing()) {
mMediaController.hide();
} else {
mMediaController.show();
}
}
최종 조정 은 mMediaController.hide()입 니 다.mMediaController.show()와그래서 우리 문 은 자신의 플레이어 인터페이스 에서 자신의 레이아웃 과 플레이어 진도 바 를 실현 하면 hide()와 show()방법 을 다시 쓰 면 됩 니 다.
위 에서 말 한 것 은 편집장 이 여러분 에 게 소개 한 안 드 로 이 드 재생 영상 에서 흔히 볼 수 있 는 문제 의 매듭 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 저 에 게 메 시 지 를 남 겨 주세요.편집장 은 신속하게 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.