YouTube视频和图片位于一个ViewPager中?

时间:2018-05-04 14:24:38

标签: java android xml android-viewpager android-sliding

我需要制作一个可能包含YouTube视频,图片和gif的滑块。

我可以创建图像或gif的滑块,但是如何在单个ViewPager中合并它们。请帮忙。任何建议或链接都​​会有所帮助。

1 个答案:

答案 0 :(得分:0)

我们假设您的片段将位于ViewPager中的固定位置。 你应该制作两个具有两种不同布局的片段 我们打电话给他们:ImageFragmentVideoFragment。 你还应该扩展FragmentPagerAdapter 并像这样实施getItem(int position)

@Override
public Fragment getItem(int position) {
    if (position == 2)
        return VideoFragment.newInstance();
    return ImageFragment.newInstance();
}

修改 所以这一次我们假设你在ViewPager的末尾有很多图像和一个视频。 因此,您可以将图像的路径放在ArrayList<String>(可能是本地路径或服务器的远程路径)中,并将视频路径放在String变量中......并将这些字符串中的每一个传递给相应的片段,如下所示:

    public class MultiMediaAdapter extends FragmentPagerAdapter {
        private List<String> paths;
        private String videoPath;

        public MultiMediaAdapter (FragmentManager fm, List<String> paths, String videoPath) {
            super(fm);
            this.paths = paths;
            this.videoPath = videoPath;
        }

        @Override
        public Fragment getItem(int position) {
//pay attintion that position starts  counting from zero
            if (position == paths.size()) //video at the end of the ViewPager
                return VideoFragment.newInstance(videoPath);
            return ImageFragment.newInstance(paths.get(position));
        }

        @Override
        public int getCount() {
            return this.paths.size()+1; //+1 for the video
        }
    }

你应该像这样加载片段中的每个图像:

 public class ImageFragment extends Fragment {
        private String path;

        public static ImageFragment newInstance(String path){
            ImageFragment fragment = new ImageFragment();
            fragment.setPath(path);

            return fragment;
        }

        private void setPath(String path) {
            this.path = path;
        }

        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_image, container, false);

    ImageView imageView = rootView.findViewById(R.id.imageView);

            if (path != null){
              // and here load image into imageView using path, the way you want
            }

            return rootView;
        }
    }

和VideoFragment将与ImageFragment

类似