Saya sedang menulis layar tutorial kecil dalam Aktivitas yang memiliki ViewPager yang memiliki beberapa halaman, salah satunya dapat berupa video yang berjalan dalam loop tak terbatas dan gambar di halaman lainnya.
Masalahnya adalah ketika saya menggulir halaman dengan video yang diputar (atau dijeda), tampilan videonya menonjol keluar dari wadahnya. Saya mencoba mengatur properti klip anak dan padding pada wadah dan ViewPager tetapi tidak berhasil.
Bisakah Anda menunjukkan kepada saya apa yang menyebabkan perilaku ini?
Pengaturan video dilakukan dalam PageAdapter sebagai berikut:
![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);
}