ฉันกำลังเขียนหน้าจอช่วยสอนเล็กๆ น้อยๆ ในกิจกรรมที่มี ViewPager ซึ่งมีหลายหน้า ซึ่งหนึ่งในนั้นอาจเป็นวิดีโอที่ทำงานวนซ้ำไม่สิ้นสุดและรูปภาพบนหน้าอื่นๆ
ปัญหาคือเมื่อฉันเลื่อนหน้าโดยที่วิดีโอกำลังเล่น (หรือหยุดชั่วคราว) มุมมองวิดีโอจะหลุดออกจากคอนเทนเนอร์ ฉันพยายามตั้งค่าคุณสมบัติย่อยของคลิปและคุณสมบัติการเติมบนคอนเทนเนอร์และ ViewPager แต่ก็ไม่มีประโยชน์
คุณช่วยชี้ให้ฉันฟังหน่อยได้ไหมว่าอะไรเป็นสาเหตุของพฤติกรรมนี้
การตั้งค่าของวิดีโอเสร็จสิ้นภายใน PageAdapter ดังนี้:
![enter image description here][1]TutorialPage tutorialPageItem = tutorialPagesList.get(position);
// Set tutorialImageDrawable as a compound drawable of the TextView
Drawable tutorialImageDrawable = tutorialPageItem.getTutorialImageDrawable();
if (tutorialImageDrawable != null) {
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)imageView.getLayoutParams();
params.width = LayoutParams.WRAP_CONTENT;
params.height = LayoutParams.WRAP_CONTENT;
imageView.setImageDrawable(tutorialImageDrawable);
videoView.setVisibility(View.INVISIBLE);
} else {
try {
//set the uri of the video to be played
videoView.setVideoURI(Uri.parse("android.resource://" + context.getPackageName() + "/" + R.raw.up_test_640x640_lite_2));
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
videoView.requestFocus();
videoView.setZOrderMediaOverlay(true);
//we also set an setOnPreparedListener in order to know when the video file is ready for playback
videoView.setOnPreparedListener(new OnPreparedListener() {
private int videoPosition;
public void onPrepared(MediaPlayer mediaPlayer) {
// close the progress bar and play the video
//if we have a position on savedInstanceState, the video playback should start from here
videoView.seekTo(videoPosition);
if (videoPosition == 0) {
videoView.start();
} else {
//if we come from a resumed activity, video playback will be paused
videoView.pause();
}
}
});
videoView.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
videoView.seekTo(0);
videoView.start();
}
});
ViewTreeObserver treeObserver = imageView.getViewTreeObserver();
treeObserver.addOnPreDrawListener(new OnPreDrawListener() {
@Override
public boolean onPreDraw() {
// TODO Auto-generated method stub
imageView.getViewTreeObserver().removeOnPreDrawListener(this);
int width = imageView.getWidth();
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)imageView.getLayoutParams();
params.height = width;
imageView.setLayoutParams(params);
return false;
}
});
imageView.setVisibility(View.INVISIBLE);
}