2017-07-16 19 views
1

私はYouTubeプレーヤーAPIを追加しようとしています。クリックイベントが発生したときにサムネイルの表示が消えてプログレスバーが表示され、ビデオの再生が開始されるとプログレスバーが消えます。最初はProgressBarがなくなりました。CardViewのすべての位置でProgressBarが表示されない

layout.xml

<RelativeLayout 
      android:id="@+id/rl" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/hr" 
      android:layout_centerHorizontal="true" 
      android:gravity="center_horizontal"> 


      <com.example.prateek.videoplayertest.YoutubePlayerView   
       android:id="@+id/ytplayer" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentStart="true" 
       android:layout_alignParentTop="true" 
       android:layout_centerVertical="true" 
       android:layout_marginLeft="-3dp" 
       android:adjustViewBounds="true" 
       android:scaleType="centerCrop"> 

       <ImageView 
        android:id="@+id/yt_thumbnail" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:layout_alignParentTop="true" 
        android:layout_marginLeft="-3dp" 
        android:adjustViewBounds="true" 
        android:background="#000000" 
        android:scaleType="fitXY"> 
       </ImageView> 
      </com.example.prateek.videoplayertest.YoutubePlayerView> 

      <ProgressBar 
       android:id="@+id/item_progress" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:foregroundGravity="center" 
       android:indeterminate="true" 
       android:visibility="gone" 
       android:layout_centerInParent="true" /> 


     </RelativeLayout> 

RecyclerAdapter.java

@Override 
    public void onBindViewHolder(final ViewHolder holder, final int position) { 

Picasso.with(context).load(video_thumbnail.get(position)).memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE).into(holder.yt_video_thumb); 
       holder.ytplayer.setVisibility(View.VISIBLE); 
       holder.ytplayer.setAutoPlayerHeight(context); 

       final YTParams params = new YTParams(); 
       params.setPlaybackQuality(PlaybackQuality.small); 
       holder.yt_video_thumb.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         holder.flag_y = 1; 
         if(holder.flag_x == 1 && holder.flag_y == 1){ 
          holder.ytplayer.play(); 
         } 
          holder.yt_video_thumb.setVisibility(View.GONE); 
          holder.yt_progress.setVisibility(View.VISIBLE); 
        } 
       }); 
       holder.ytplayer.initialize(video_id.get(position), params, new YoutubePlayerView.YouTubeListener() { 

        @Override 
        public void onReady() { 
         holder.flag_x = 1; 
         if(holder.flag_x == 1 && holder.flag_y == 1){ 
          holder.ytplayer.play(); 
         } 

         JLog.i("onReady()"); 
        } 

        @Override 
        public void onStateChange(YoutubePlayerView.STATE state) { 
         /** 
         * YoutubePlayerView.STATE 
         * 
         * UNSTARTED, ENDED, PLAYING, PAUSED, BUFFERING, CUED, NONE 
         * 
         */ 
         if(state == YoutubePlayerView.STATE.ENDED){ 
          holder.yt_video_thumb.setVisibility(View.VISIBLE);      } 
         if(state == YoutubePlayerView.STATE.BUFFERING){ 
          if(holder.flag_x == 1 && holder.flag_y == 1){ 
           holder.ytplayer.play(); 
          } 
          holder.ytplayer.play(); 

         } 

         if(state == YoutubePlayerView.STATE.PLAYING){ 
          holder.yt_progress.setVisibility(View.GONE); 
          holder.flag_y = 0; 
          holder.flag_x = 0; 
          Log.d("ValueCHECK", holder.flag_y+" "+ holder.flag_x); 
         } 
         if(state == YoutubePlayerView.STATE.PAUSED){ 
          holder.yt_video_thumb.setVisibility(View.VISIBLE); 

         } 

         JLog.i("onStateChange(" + state + ")"); 
        } 

        @Override 
        public void onPlaybackQualityChange(String arg) { 
         JLog.i("onPlaybackQualityChange(" + arg + ")"); 
        } 

        @Override 
        public void onPlaybackRateChange(String arg) { 
         JLog.i("onPlaybackRateChange(" + arg + ")"); 
        } 

        @Override 
        public void onError(String arg) { 
         holder.yt_video_thumb.setVisibility(View.VISIBLE); 
         JLog.e("onError(" + arg + ")"); 
        } 

        @Override 
        public void onApiChange(String arg) { 
         JLog.i("onApiChange(" + arg + ")"); 
        } 

        @Override 
        public void onCurrentSecond(double second) { 

        } 


        @Override 
        public void onDuration(double duration) { 
         // total duration 
         JLog.i("onDuration(" + duration + ")"); 
        } 

        @Override 
        public void logs(String log) { 
         // javascript debug log. you don't need to use it. 
         JLog.d(log); 
        } 
       }); 
} 

しかし、私はプログレスバーが表示され、ビデオは初めてのいずれかをクリックすると罰金が、ために動作していたときに何が起こっているのか進行状況バーをクリックすると次の動画が表示されません。どうして? ビデオサムネイルをクリックすると、カードビューのすべてのポジションでプログレスバーが表示されます。 誰でも助けてくれますか? 助けていただければ幸いです ありがとうございました!!!

答えて

0

最後に、progressBarの可視性を設定する代わりに解決策を得ましたGONEはVisibility INVISIBLEを設定し、最初にprogressBar INVISIBLEの可視性を設定します。 お待ちしています。 ありがとうございました

関連する問題