显示来自 SD 卡或内部存储的图像以查看寻呼机 android

Posted

技术标签:

【中文标题】显示来自 SD 卡或内部存储的图像以查看寻呼机 android【英文标题】:display image from SD card or internal storage to view pager android 【发布时间】:2017-12-30 22:11:11 【问题描述】:

有一个活动,它从可绘制文件夹中读取图像并将它们显示在 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);

    

【问题讨论】:

看看这个:***.com/a/11237382/5402482 太复杂了,我一头雾水 @emin,您首先需要基本上具有将图像加载为位图的功能。之后,您可以将它们放在任何您想要的地方。 @AndreiT,你能帮我解决一下吗, @KavachChandra 的回答也不错,他的回答和我的回答不同的是我用的是毕加索。 【参考方案1】:

您可以使用 Picasso 从 sdcard 加载图像。此处指南:Picasso Library

在你的情况下:

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

【讨论】:

我应该在代码的哪一部分添加此代码,适配器页面? 根据您的代码,我基本上会有一个带有名称的字符串列表,每次加载图像时,我都会将其添加到 Picasso(your_filename) 的路径中。但你可以随心所欲。 我的 SD 卡中有图像文件(文件名为 image),图像名称为 index1.png ,index2.png ,.. 直到 index5.png ,请您改进我的代码 我认为这是您必须尝试的事情。在这里,我们不是为您编写代码,而是帮助您找到答案。 我可以从画廊(内部存储)中选择图像,但我不能像幻灯片那样在屏幕上显示,你能帮我解决一下吗?

以上是关于显示来自 SD 卡或内部存储的图像以查看寻呼机 android的主要内容,如果未能解决你的问题,请参考以下文章

Android - 如何放置一个从 SD 卡或相机胶卷加载图像的图像视图?

触发图像点击事件时,如何将图像保存到手机内存(例如 SD 卡或本地硬盘驱动器)?

从android寻呼机将图像保存到sd卡

手机的总容量和内部存储啥意思

从 JSON url 下载图像不起作用。 [关闭]

Flex/air mobile - 显示来自 SD 卡的所有 mp3 歌曲,带有 id3 信息和海报图像