Android 显示SD卡或内部存储器中的图像以查看寻呼机

Android 显示SD卡或内部存储器中的图像以查看寻呼机,android,android-layout,android-asynctask,android-viewpager,Android,Android Layout,Android Asynctask,Android Viewpager,有一个活动可以从drawable文件夹中读取图像,并在viewpager中显示它们,就像幻灯片放映一样。下面是我的代码。现在我想在viewpager中显示SD卡或内部存储器中的图像。要从SD卡或内部存储器中读取图像并将其显示在类似幻灯片放映的viewpager中,应在下面的代码中进行哪些更改 活动 public class MainActivity extends AppCompatActivity { ViewPager viewPager; @Override

有一个活动可以从drawable文件夹中读取图像,并在viewpager中显示它们,就像幻灯片放映一样。下面是我的代码。现在我想在viewpager中显示SD卡或内部存储器中的图像。要从SD卡或内部存储器中读取图像并将其显示在类似幻灯片放映的viewpager中,应在下面的代码中进行哪些更改

活动

    public class MainActivity extends AppCompatActivity {
    ViewPager viewPager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        setContentView(R.layout.activity_main);

        viewPager = (ViewPager) findViewById(R.id.viewPager);

        ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(this);

        viewPager.setAdapter(viewPagerAdapter);
        Timer timer = new Timer();
        timer.scheduleAtFixedRate(new MyTimerTask(), 3000,3000);

    }
    public class MyTimerTask extends TimerTask {

        @Override
        public void run() {

            MainActivity.this.runOnUiThread(new Runnable() {
                @Override
                public void run() {

                    if (viewPager.getCurrentItem() == 0) {
                        viewPager.setCurrentItem(1);
                    } else if (viewPager.getCurrentItem() == 1) {
                        viewPager.setCurrentItem(2);
                    } else if (viewPager.getCurrentItem() == 2) {
                        viewPager.setCurrentItem(3);
                    } else if (viewPager.getCurrentItem() == 3) {
                        viewPager.setCurrentItem(4);
                    } else {
                            viewPager.setCurrentItem(0);
                        }

                    }


                ;

            });
        }
    }
}
ViewPagerAdapter

    public class ViewPagerAdapter extends PagerAdapter {

    private Context context;
    private LayoutInflater layoutInflater;
   private Integer [] images = {R.drawable.index1,R.drawable.index2,R.drawable.index3,R.drawable.index4,R.drawable.index5};

    public ViewPagerAdapter(Context context) {

        this.context = context;
    }
    @Override
    public int getCount() {

        return images.length;
    }
    @Override
    public boolean isViewFromObject(View view, Object object) {

        return view == object;
    }
    @Override
    public Object instantiateItem(ViewGroup container, final int position) {

        layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View view = layoutInflater.inflate(R.layout.custom_layout, null);
        ImageView imageView = (ImageView) view.findViewById(R.id.imageView);
        imageView.setImageResource(images[position]);


        ViewPager vp = (ViewPager) container;
        vp.addView(view, 0);
        return view;
    }
    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {

        ViewPager vp = (ViewPager) container;
        View view = (View) object;
        vp.removeView(view);

    }
}

您可以使用毕加索从SD卡加载图像。此处指南:

就你而言:

    String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath(); // retrieve the storage dir
    Picasso.with(context).load(new File(baseDir + File.separator + your_filename)).into(imageView);

看看这个:太复杂了,我confused@emin,您首先需要基本上具有将图像加载为位图的功能。然后你可以把它们放在你想放的任何地方。@AndreiT,你能帮我一下吗,@Kavachhandra答案也很好,他的答案和我的答案之间的区别是我使用了毕加索。我应该在代码的哪一部分添加此代码,适配器页?基于你的代码,我基本上会有一个字符串列表,其中的名称是aded,每次加载图像时,我都会将其添加到毕加索的路径(你的文件名)。我的Sd卡里有一个图像文件(文件名是image),图像名是index1.png,index2.png,。。在index5.png之前,你能改进我的代码吗?我想这是你必须尝试的事情。这里我们不为您编码,而是帮助您找到答案。我可以从gallery(内部stroge)中选择图像,但我无法像幻灯片一样在屏幕上显示,您能帮我吗。