在android中创建所有图像的幻灯片

时间:2017-07-29 04:18:34

标签: android android-viewpager

我正在使用图片库,在那里我将存储在Android手机库中的所有图片都提取到我的应用程序中。请找到我开发该图片库时所遵循的链接。

Get all images from Gallery into android application Programmatically

我已经花了好几个小时来弄清楚如何制作全屏幻灯片的图片。我能够实现全屏图像,但它始终显示相同的图像,即使图库有3个图像。我正在使用ViewPagerAdapter在适配器中设置图像以显示全屏预览。图像滑块不起作用,我不知道为什么它不起作用。请找到我到目前为止所尝试的源代码。

Model_images.java

public class Model_images{
String str_folder;
ArrayList<String> al_imagepath;

public String getStr_folder() {
    return str_folder;
}

public void setStr_folder(String str_folder) {
    this.str_folder = str_folder;
}

public ArrayList<String> getAl_imagepath() {
    return al_imagepath;
}

public void setAl_imagepath(ArrayList<String> al_imagepath) {
    this.al_imagepath = al_imagepath;
}
}

我遵循了相同的教程,在那里我给出了原始源代码的链接。即使我已经给出了链接,我也会发布我试过的ViewPager的源代码。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_gallery);
    ButterKnife.bind(this);

    setSupportActionBar(toolbar);

    gridView = (GridView)findViewById(R.id.gv_folder);
    int_position = getIntent().getIntExtra("value", 0);
    adapter = new GridViewAdapter(this, GalleryFragment.al_images,int_position);
    gridView.setAdapter(adapter);

    gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            Bundle bundle = new Bundle();
            bundle.putInt("position", int_position);
            FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
            SlideshowDialogFragment newFragment = SlideshowDialogFragment.newInstance();
            newFragment.setArguments(bundle);
            newFragment.show(ft, "slideshow");
        }
    });
}

这是SlideshowFragmentDialog,用于在幻灯片视图中显示图像。

SLideShowFragmentDialog.java

public class SlideshowDialogFragment extends DialogFragment {

private String TAG = SlideshowDialogFragment.class.getSimpleName();
private ViewPager viewPager;
private MyViewPagerAdapter myViewPagerAdapter;
private int selectedPosition = 0;

static SlideshowDialogFragment newInstance() {
    SlideshowDialogFragment frag = new SlideshowDialogFragment();
    return frag;
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment_image_slider, container, false);
    viewPager = (ViewPager) v.findViewById(R.id.viewpager);

    //images = (ArrayList<Image>) getArguments().getSerializable("images");
    selectedPosition = getArguments().getInt("position");

    myViewPagerAdapter = new MyViewPagerAdapter();
    viewPager.setAdapter(myViewPagerAdapter);
    viewPager.addOnPageChangeListener(viewPagerPageChangeListener);

    setCurrentItem(selectedPosition);

    return v;
}

private void setCurrentItem(int position) {
    viewPager.setCurrentItem(position, false);
    displayMetaInfo(selectedPosition);
}

//  page change listener
ViewPager.OnPageChangeListener viewPagerPageChangeListener = new ViewPager.OnPageChangeListener() {

    @Override
    public void onPageSelected(int position) {
        displayMetaInfo(position);
    }

    @Override
    public void onPageScrolled(int arg0, float arg1, int arg2) {

    }

    @Override
    public void onPageScrollStateChanged(int arg0) {

    }
};

private void displayMetaInfo(int position) {

    Model_images imagePath = GalleryFragment.al_images.get(position);
    Toast.makeText(getContext(), imagePath.toString(), Toast.LENGTH_SHORT).show();

}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setStyle(android.support.v4.app.DialogFragment.STYLE_NORMAL, android.R.style.Theme_Black_NoTitleBar_Fullscreen);
}

//  adapter
public class MyViewPagerAdapter extends PagerAdapter {

    private LayoutInflater layoutInflater;

    public MyViewPagerAdapter() {
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {

        layoutInflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View view = layoutInflater.inflate(R.layout.activity_full_screen, container, false);

        ImageView imageViewPreview = (ImageView) view.findViewById(R.id.fullScreenImageView);

        Model_images image = GalleryFragment.al_images.get(position);

        Glide.with(getContext()).load(image.getAl_imagepath().get(position))
                .thumbnail(0.5f)
                .diskCacheStrategy(DiskCacheStrategy.NONE)
                .skipMemoryCache(true)
                .into(imageViewPreview);

        container.addView(view);

        return view;
    }

    @Override
    public int getCount() {
        return GalleryFragment.al_images.size();
    }

    @Override
    public boolean isViewFromObject(View view, Object obj) {
        return view == ((View) obj);
    }


    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View) object);
    }
}

我没有发布MainActivity和Adapter类的源代码,因为我直接给了项目链接。我按照完全相同的链接。如果您仍然希望我发布源代码,我可以编辑问题并发布缺少的内容。我不想在所有代码库中发布这篇文章。

提前致谢。任何帮助表示赞赏。请帮我看看如何实现全屏幻灯片显示。

0 个答案:

没有答案