我需要制作一个可能包含YouTube视频,图片和gif的滑块。
我可以创建图像或gif的滑块,但是如何在单个ViewPager中合并它们。请帮忙。任何建议或链接都会有所帮助。
答案 0 :(得分:0)
我们假设您的片段将位于ViewPager中的固定位置。
你应该制作两个具有两种不同布局的片段
我们打电话给他们:ImageFragment
和VideoFragment
。
你还应该扩展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
类似