zoukankan      html  css  js  c++  java
  • Android 获取SDCard中某个目录下图片

    本文介绍Android开发中如何获取SDCard中某目录下的所有图片并显示出来,下面的我们提供的这个函数是通用的,只要提供路径就可以查询出该目录下所有图片的路径信息,并保存到一个List<String>中。

    1.获取SDCard中某个目录下图片路径集合

    public List<String> getPictures(final String strPath) {
        List<String> list = new ArrayList<String>();
        File file = new File(strPath);
        File[] allfiles = file.listFiles();
        if (allfiles == null) {
          return null;
        } 
        for(int k = 0; k < allfiles.length; k++) {
          final File fi = files[i];
          if(fi.isFile()) {
                  int idx = fi.getPath().lastIndexOf(".");
                  if (idx <= 0) {
                      continue;
                  }
                  String suffix = fi.getPath().substring(idx);
                  if (suffix.toLowerCase().equals(".jpg") ||
                      suffix.toLowerCase().equals(".jpeg") ||
                      suffix.toLowerCase().equals(".bmp") ||
                      suffix.toLowerCase().equals(".png") ||
                      suffix.toLowerCase().equals(".gif") ) {
                      list.add(fi.getPath());
                  }
          }
       }
       return list;
     } 

     2.获取sd卡下的图片并显示

    List<String> list = getPictures(Environment.getExternalStorageDirectory() + "");
     if (list != null) {
        Log.d(TAG, "list.size = " + list.size());
        for (int i = 0; i < list.size(); i++) {
            Bitmap bm = BitmapFactory.decodeFile(list.get(i));
            int top = 30;
            if (i > 0) {
                top += BitmapFactory.decodeFile(list.get(i - 1)).getHeight() + 2;
            }
            canvas.drawBitmap(bm, 0, top, paint);
        }
     }
     else {
        Log.d(TAG, "list is null!!!");
     } 

    本文提供两个函数,第一个函数主要是获取SDCard中某目录下的所有图片,第二个函数主要是显示图

    保存图片可以封装成一个类:

    package com.mogunote.adapter;
    
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    
    import android.graphics.Bitmap;
    import android.graphics.Bitmap.CompressFormat;
    import android.os.Environment;
    import android.view.View;
    
    public class SaveViewUtil {
        
        private static final File rootDir = new File(Environment.getExternalStorageDirectory()+File.separator+"paints/");
    
        /**保存截图的方法*/
        public static boolean saveScreen(View view){
            //判断sdcard是否可用
            if(!Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){
                return false;
            }
            if(!rootDir.exists()){
                rootDir.mkdir();
            }
            view.setDrawingCacheEnabled(true);
            view.buildDrawingCache();
            Bitmap bitmap = view.getDrawingCache();
            try {
                bitmap.compress(CompressFormat.JPEG, 100, new FileOutputStream(new File(rootDir,System.currentTimeMillis()+".jpg")));
                return true;
            } catch (FileNotFoundException e) {
                e.printStackTrace();
                return false;
            }finally{
                view.setDrawingCacheEnabled(false);
                bitmap = null;
            }
        }
    }

    调用封装类:

    if(SaveViewUtil.saveScreen(hbView)){
                    Toast.makeText(this, "截图成功", 0).show();
                }else{
                    Toast.makeText(this, "截图失败,请检查sdcard是否可用", 0).show();
                }
  • 相关阅读:
    行星工单系统部分实现(1)-流程控制
    当初要是看了这篇,React高阶组件早会了
    健壮高效的小程序登录方案
    SQL Case when 的使用
    JS脚本动态给元素/控件添加事件
    VMware虚拟机屏幕大小只有400,800怎么办如何解决
    mysql和mysql jdbc连接器mysql-connector-java对应关系
    mysql中难以理解的sql
    PLSQL计算质数
    java alibaba fastJson 遍历数组json
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/4193418.html
Copyright © 2011-2022 走看看