滚动时如何在recylerview中播放视频列表(了解:自动播放)?

时间:2018-06-26 09:13:38

标签: android listview android-recyclerview recycler-adapter

我被困了两天。我无法实现如何编写该逻辑。

if(newState == RecyclerView.SCROLL_STATE_IDLE){                 linearLayoutManager =(LinearLayoutManager)recyclerView.getLayoutManager();                 final int firstVisiblePosition = linearLayoutManager.findFirstVisibleItemPosition();                 final int lastVisiblePosition = linearLayoutManager.findLastVisibleItemPosition();                 Log.i(“ TAG”,“ FIRSTVISIBLEPOSITION” + firstVisiblePosition);                 Log.i(“ TAG”,“ LASTVISIBLEPOSITION” + lastVisiblePosition);

            if (oldFocuslayout != null && imageViewPlaceHolder != null) {
                pos = (int) oldFocuslayout.getTag();
                viewtype = (int) imageViewPlaceHolder.getTag();
                if (viewtype == mainFeedAdapter.SHARE_VIDEO_LAYOUT) {
                    textureView = (TextureView) oldFocuslayout.findViewById(R.id.tex_video_preview);
                    imageViewPlaceHolder = (ImageView) oldFocuslayout.findViewById(R.id.img_video_single_image);

                } else if (viewtype == mainFeedAdapter.VIDEO_LAYOUT) {
                    textureView = (TextureView) oldFocuslayout.findViewById(R.id.tex_video_preview);
                    imageViewPlaceHolder = (ImageView) oldFocuslayout.findViewById(R.id.img_video_single_image);
                }
                imageViewPlaceHolder.setImageResource(0);
                Picasso.get().load(mainFeedAdapter.media_base_url + mainFeedAdapter.feed_list.get(pos).getVideo().get(0).getMedia_url()).fit().centerCrop().into(imageViewPlaceHolder);
            }


            newFocusLayout = linearLayoutManager.findViewByPosition(firstVisiblePosition);
            oldFocuslayout = newFocusLayout;
            int viewtype = recyclerView.findViewHolderForAdapterPosition(firstVisiblePosition).getItemViewType();
            if (viewtype == mainFeedAdapter.SHARE_VIDEO_LAYOUT) {
                textureView = (TextureView) newFocusLayout.findViewById(R.id.tex_video_preview);
                imageViewPlaceHolder = (ImageView) newFocusLayout.findViewById(R.id.img_video_single_image);
                imageViewPlaceHolder.setTag(viewtype);

            } else if (viewtype == mainFeedAdapter.VIDEO_LAYOUT) {
                textureView = (TextureView) newFocusLayout.findViewById(R.id.tex_video_preview);
                imageViewPlaceHolder = (ImageView) newFocusLayout.findViewById(R.id.img_video_single_image);
                imageViewPlaceHolder.setTag(viewtype);
            }
            oldFocuslayout.setTag(firstVisiblePosition);

            textureView.setSurfaceTextureListener(new TextureView.SurfaceTextureListener() {
                @Override
                public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
                    surfacePlace = new Surface(surface);
                    mediaPlayer = new MediaPlayer();
                    textureView.setTag(mediaPlayer);
                    mediaPlayer.setSurface(surfacePlace);
                    try {
                        mediaPlayer.setDataSource(url);
                        mediaPlayer.setLooping(true);
                        mediaPlayer.setVolume(0, 0);
                        mediaPlayer.prepare();
                        mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                            public void onPrepared(MediaPlayer mp) {
                                mp.start();
                                textureView.setVisibility(View.VISIBLE);
                                imageViewPlaceHolder.setVisibility(View.GONE);
                            }
                        });
                    } catch (IllegalArgumentException e1) {
                        e1.printStackTrace();
                    } catch (SecurityException e1) {
                        e1.printStackTrace();
                    } catch (IllegalStateException e1) {
                        e1.printStackTrace();
                    } catch (IOException e1) {
                        e1.printStackTrace();
                    }
                }

                @Override
                public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {

                }

                @Override
                public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
                    return false;
                }

                @Override
                public void onSurfaceTextureUpdated(SurfaceTexture surface) {

                }
            });
        }

请帮助我表示感谢。

0 个答案:

没有答案