ViewPager and YouTubePlayer

萝らか妹 提交于 2019-12-06 15:03:56

I don't remember exactly what was wrong, but yes, I solved my problem. So, if it can help you, here is the code :

In my main activity, using PagerAdapter :

private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
    public ScreenSlidePagerAdapter(android.support.v4.app.FragmentManager fm) {
        super(fm);
    }

    @Override
    public android.support.v4.app.Fragment getItem(int position) {
        fragmentYouTubeContent = FragmentYouTubeContent.create(position);
        return fragmentYouTubeContent;
    }

    @Override
    public int getCount() {
        int nb = 3;
        return nb;
    }
}

My FragmentYouTubeContent.class

package com.orange.OrangeJobs;


import java.util.List;

import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubeStandalonePlayer;
import com.google.android.youtube.player.YouTubeThumbnailLoader;
import com.google.android.youtube.player.YouTubeThumbnailView;


import android.support.v4.app.Fragment;
import android.annotation.SuppressLint;
import android.app.Dialog;
import android.content.Intent;
import android.content.pm.ResolveInfo;
import android.content.res.Configuration;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.TextView;
import android.widget.Toast;


public class FragmentYouTubeContent extends Fragment implements YouTubeThumbnailView.OnInitializedListener {

      public static final int REQ_START_STANDALONE_PLAYER = 101;
      private static final int REQ_RESOLVE_SERVICE_MISSING = 2;
      private static final int RECOVERY_DIALOG_REQUEST = 1;

    /**
     * The fragment's page number.
     */
    private int mPageNumber;
    private String urlYouTube;
    private boolean canHideStatusBar = false;
    private Dialog errorDialog;
    FrameLayout rl;
    private YouTubeThumbnailView thumbnailView;

    /**
     * Factory method for this fragment class. Constructs a new fragment for the given page number.
     */
    public static FragmentYouTubeContent create(int pageNumber) {
        FragmentYouTubeContent fragment = new FragmentYouTubeContent();
        fragment.setPageNumber(pageNumber);
        return fragment;
    }

    public FragmentYouTubeContent() {
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @SuppressLint("InlinedApi")
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        setRetainInstance(true);
        ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.youtube, container, false);
        urlYouTube = "YOUR_VIDEO_URL";
        if (!"".equals(urlYouTube)) {
            thumbnailView = (YouTubeThumbnailView) rootView.findViewById(R.id.youtubethumbnailview);
            thumbnailView.initialize(Params.YOUTUBE_KEY, this);
            thumbnailView.setOnClickListener(new OnClickListener(){
                @Override
                public void onClick(View arg0) {
                    // Launch standalone YoutTube player
                    Intent intent = null;
                    intent = YouTubeStandalonePlayer.createVideoIntent(getActivity(), YOUTUBE_KEY, urlYouTube, 0, true, false);
                    if (intent != null) {
                      if (canResolveIntent(intent)) {
                          canHideStatusBar = true;
                          startActivityForResult(intent, REQ_START_STANDALONE_PLAYER);
                      } else {
                          // Could not resolve the intent - must need to install or update the YouTube API service.
                          YouTubeInitializationResult
                                .SERVICE_MISSING
                                .getErrorDialog(getActivity(), REQ_RESOLVE_SERVICE_MISSING).show();
                      }
                    }
                }});
        }
        return rootView;
    }

    @Override
    public void onResume() {
        super.onResume();
        boolean isLandscape = false;
        int currentOrientation = getResources().getConfiguration().orientation;
        if (currentOrientation == Configuration.ORIENTATION_LANDSCAPE) {
            isLandscape = true;
        }
        else {
            isLandscape = false;
        }        
        if (canHideStatusBar && this.isVisible() && isLandscape) {
            Utils.hideStatusBar(getActivity());
            canHideStatusBar = false;
        }
    }

    @Override
    public void onPause() {
        super.onPause();
    }    


    @Override
    public void onInitializationSuccess(YouTubeThumbnailView thumbnailView, YouTubeThumbnailLoader thumbnailLoader) {
      thumbnailLoader.setVideo(urlYouTube);
    }

    @Override
    public void onInitializationFailure(YouTubeThumbnailView thumbnailView, YouTubeInitializationResult errorReason) {
        if (errorReason.isUserRecoverableError()) {
            if (errorDialog == null || !errorDialog.isShowing()) {
              errorDialog = errorReason.getErrorDialog(getActivity(), RECOVERY_DIALOG_REQUEST);
              errorDialog.show();
            }
          } else {
            String errorMessage = String.format(getString(R.string.error_thumbnail_view), errorReason.toString());
            Toast.makeText(getActivity(), errorMessage, Toast.LENGTH_LONG).show();
          }
    }

    // ***** Private methods *************************************************************************************

    private boolean canResolveIntent(Intent intent) {
        List<ResolveInfo> resolveInfo = getActivity().getPackageManager().queryIntentActivities(intent, 0);
        return resolveInfo != null && !resolveInfo.isEmpty();
    }

    // ***** Properties methods *************************************************************************************
    /**
     * Returns the page number represented by this fragment object.
     */
    public int getPageNumber() {
        return mPageNumber;
    }

    /**
     * @param pageNumber the pageNumber to set
     */
    public void setPageNumber(int pageNumber) {
        this.mPageNumber = pageNumber;
    }

    /**
     * @return the canHideStatusBar
     */
    public boolean isCanHideStatusBar() {
        return canHideStatusBar;
    }

    /**
     * @param canHideStatusBar the canHideStatusBar to set
     */
    public void setCanHideStatusBar(boolean canHideStatusBar) {
        this.canHideStatusBar = canHideStatusBar;
    }

}

My layout : youtube.xml

<?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"
              android:clipToPadding="false"
              android:background="@color/black"
              android:scrollbarStyle="outsideOverlay"
              android:orientation="horizontal" >


    <com.google.android.youtube.player.YouTubeThumbnailView
                android:id="@+id/youtubethumbnailview"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />    

    <ImageView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:contentDescription="@string/empty_string"
        android:src="@drawable/ic_media_embed_play"         
    />

</RelativeLayout>
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!