1、此项目实现了图片从SD卡中获取,获取图片后进行自动轮播或者滑动
2、项目运行效果:
3、大概流程及关键代码分享
(1)、从SD卡指定文件夹获取图片
sdUrl :指的是图片存在SD卡的路径
File file = new File(sdUrl);
if(file.isDirectory()){ for(File fileUrl : file.listFiles()){ String path = fileUrl.getAbsolutePath(); if(path.endsWith(".jpg")||path.endsWith(".jpeg")||path.endsWith(".png")){ list.add(path); } } }
(2)、初始化显示的数据
/** 初始化要展示的ImageView*/ imageViewList = new ArrayList<ImageView>(); ImageView imageView; View pointView; LinearLayout.LayoutParams layoutParams; for (int i = 0; i < list.size(); i++) { /** 初始化要显示的图片对象*/ imageView = new ImageView(this); imageView.setImageBitmap(BitmapFactory.decodeFile(list.get(i))); imageViewList.add(imageView); /** 加小白点, 指示器*/ pointView = new View(this); pointView.setBackgroundResource(R.drawable.selector_bg_point); layoutParams = new LinearLayout.LayoutParams(20, 20); if (i != 0) { layoutParams.leftMargin = 10; } /** 设置默认所有都不可用*/ pointView.setEnabled(false); llPointContainer.addView(pointView, layoutParams); }
(3)、初始化适配器
扫描二维码关注公众号,回复:
1085284 查看本文章
llPointContainer.getChildAt(0).setEnabled(true); previousSelectedPosition = 0; /** 设置适配器*/ viewPager.setAdapter(new MyAdapter()); /** 设置到某个位置*/ viewPager.setCurrentItem(0);
class MyAdapter extends PagerAdapter { @Override public int getCount() { return Integer.MAX_VALUE; } /**3. 指定复用的判断逻辑, 固定写法*/ @Override public boolean isViewFromObject(View view, Object object) { /** 当划到新的条目, 又返回来, view是否可以被复用.*/ return view == object; } /** 1. 返回要显示的条目内容, 创建条目*/ @Override public Object instantiateItem(ViewGroup container, int position) { // container: 容器: ViewPager // position: 当前要显示条目的位置 int newPosition = position % imageViewList.size(); ImageView imageView = imageViewList.get(newPosition); // a. 把View对象添加到container中 container.addView(imageView); return imageView; } /** 2. 销毁条目*/ @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } }
(4)、开始进行轮播
/** 开启轮播*/ new Thread() { @Override public void run() { isRunning = true; while (isRunning) { try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } /** 往下跳一位*/ runOnUiThread(new Runnable() { @Override public void run() { Log.e(TAG,"设置当前位置: " + viewPager.getCurrentItem()); viewPager.setCurrentItem(viewPager.getCurrentItem() + 1); } }); } } }.start();
(5)、在Androidmanifest.xml中添加权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
介绍到此结束,希望对大家有所帮助,demo代码如下: