VideoView à l'intérieur de fragment provoque un écran noir pichenette

Nous avons une application Android en cours d'exécution sur l'API Android 4.0. L'une des activités qui a une disposition qui divise l'écran en 2 parties. Sur le côté gauche, nous avons une partie statique avec des boutons. Sur le côté droit, nous avons un FrameLayout qui va basculer vers le fragment correspondant selon la touche sur laquelle vous appuyez.

Problème:
L'un des fragments sur le côté droit contient un VideoView. Lorsque l'utilisateur clique sur le bouton pour afficher ce fragment le fragment est montré et la vidéo commence immédiatement la lecture cependant: lors de l'affichage de ce fragment de l'écran scintille dans le noir qui est très ennuyeux.

Voici du code de la VideoFragment classe:

public class VideoFragment extends Fragment {
public VideoView videoView;
private ExternalVideo mVideo;
private boolean mVideoExists;
private String mDestination;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mDestination = ApplicationParams.MEDIA_STORAGE_PATH + "videos/"
+ FilenameUtils.getBaseName(((DetailActivity)getActivity()).getProduct().getVideoUrl())
+ "."
+ FilenameUtils.getExtension(((DetailActivity) getActivity()).getProduct().getVideoUrl());
File file = new File(mDestination);
mVideoExists = file.exists() && file.isFile();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view;
if (mVideoExists) {
getActivity().getWindow().setFormat(PixelFormat.TRANSLUCENT);
view = inflater.inflate(R.layout.video, null);
mVideo = new ExternalVideo(mDestination);
videoView = (VideoView) view.findViewById(R.id.video_video);
MediaController mediaController = new MediaController(getActivity());
mediaController.setAnchorView(videoView);
videoView.setMediaController(mediaController);
videoView.setVideoPath(mVideo.getFullPath());
videoView.requestFocus();
videoView.setVisibility(View.VISIBLE);
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
videoView.start();
}
});
} else {
TextView textView = new TextView(getActivity());
textView.setText(getActivity().getString(R.string.videofragment_video_coming_soon));
textView.setPadding(50, 50, 50, 50);
view = textView;
}
return view;
}
}

Ici est la mise en page de fragment de vidéo:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<VideoView android:id="@+id/video_video"
android:layout_width="fill_parent"
android:layout_alignParentRight="true"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_height="fill_parent"/>
</RelativeLayout>

Quelqu'un a une idée de ce que pourrait être à l'origine de ce problème de scintillement lors de l'affichage du fragment qui contient le VideoView? Une solution serait appréciée!

EDIT1: Si je clique sur le fragment où l'VideoView est sur l'écran scintille au début. Quand je puis accédez à anoter fragment et de revenir à l'une contenant le VideoView le scintillement est allé.

  • Avez-vous d'exécuter votre application dans l'émulateur ?
  • L'exécution de l'application sur un Samsung Galaxy Tab 2 10.1 tablet
  • Essayez setAnchorView(videoView) sur votre MediaController developer.android.com/reference/android/widget/...
  • Essayé et le claquement persiste encore.
  • Ce code fonctionne parfaitement maintenant. stackoverflow.com/questions/17697670/...
  • Hmm, je ne vois pas vraiment quelque chose de mal avec ce que vous avez posté. J'ai des applications qui rendent VideoViews en fragments comme vous le décrire sans aucun problème. Je verrais si j'ai pu tester sur un autre appareil ou vous pouvez également poster votre fragment de code/mise en page aussi.
  • Même problème sur un Samsung Galaxy Tab 10.1. J'ai mis à jour ma question avec le VideoFragment classe.
  • OK, dernière deviner et je vais arrêter de monopolisant les commentaires 🙂 Essayez de supprimer les 3 lignes suivantes: getActivity().getWindow().setFormat(PixelFormat.TRANSLUCENT); videoView.requestFocus(); et videoView.setVisibility(View.VISIBLE);
  • Même problème persiste 🙁
  • Ajouté Edit1 à la question

InformationsquelleAutor Kenny | 2013-07-18