要在每张幻灯片上显示不同的图像,您需要添加一些代码来定义每个页面的正确图像。由于您只是想显示一些预定义的图像,我猜您已经将图像加载到项目的可绘制目录中。考虑到这一假设,我将带您了解 the example you're following 中缺失的部分。
如果您还没有这样做,请创建您的 ScreenSlidePageFragment 类,并将代码修改为如下所示:
public class ScreenSlidePageFragment extends Fragment {
private static final String ARG_RESOURCE_ID = "resource_id";
private int id; // resource id of the static image to display in this page
public ScreenSlidePageFragment() {
// Required empty public constructor
}
// Your program should call this to create each instance of this Fragment.
public static ScreenSlidePageFragment newInstance(int id) {
ScreenSlidePageFragment fragment = new ScreenSlidePageFragment();
Bundle args = new Bundle();
args.putInt(ARG_RESOURCE_ID, id);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
id = getArguments().getInt(ARG_RESOURCE_ID);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_screen_slide_page, container, false);
// assign our image's resource id here
ImageView imageView = (ImageView) view.findViewById(R.id.image);
imageView.setImageResource(id);
return view;
}
因为我们希望每个片段显示具有不同资源 ID 的图像,所以我添加了一个参数 (id),您可以在创建片段时将其传递给它。
现在,我们只需要对ScreenSlidePagerActivity 进行一些小改动。首先,添加一个包含您要使用的可绘制图像资源的静态数组。它应该看起来像这样:
private static final int[] IMAGES = {R.drawable.image1, R.drawable.image2, R.drawable.image3, R.drawable.image4};
最后,修改您的 PagerAdapter,让 getCount 返回数组的大小,getItem 在创建每个幻灯片的片段之前为每个页面查找适当的资源 ID。
private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
public ScreenSlidePagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
if (position < IMAGES.length)
return ScreenSlidePageFragment.newInstance(IMAGES[position]);
else
return null;
}
@Override
public int getCount() {
return IMAGES.length;
}
}