2011-05-03 42 views
3

我試圖製作一個應用程序,可以從android手機上的目錄中獲取圖像並在佈局中顯示它們。我似乎正在朝着解決方案的方向努力。我知道使用view.setBackgroundDrawable(Drawable.createFromPath(String pathName));來顯示圖像,但我不知道如何從目錄中獲取圖像的路徑。Android:如何從目錄中獲取圖像文件到view.setBackgroundDrawable()

我對做什麼有一個模糊的想法,但希望澄清這個問題。我認爲,下一步是使用:

String state = Environment.getExternalStorageState(); 
if (Environment.MEDIA_MOUNTED.equals(state) || Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) { 
    File file[] = Environment.getExternalStorageDirectory().listFiles(); 
} 

但是我怎麼篩選文件,以便只有圖像文件獲取存儲在我的file[]?如.png或.jpg/.jpeg文件?之後,我應該使用files[].getPath還是files[].getAbsolutePath?我會將結果存儲在String[]中。

我主要要求的是驗證上面的代碼應該工作。另外,我如何過濾只存儲圖像文件,如.png.jpg.jpeg

謝謝你的時間。

回答

7

你想過濾做這樣的事情:

File[] file = folder.listFiles(new FilenameFilter() { 

       @Override 
       public boolean accept(File dir, String filename) { 

        return filename.contains(".png"); 
       } 
      }); 

如果您想要的圖像文件路徑中可以說在file[0]文件,你可以這樣做:

file[0].getAbsolutePath();

+0

謝謝你的幫助。代碼工作,只做了一些修改。我使用了'File file [] = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).listFiles(new FilenameFilter(){});'。 – 2011-05-04 00:06:01

1

您想實施FileFilter並將其傳遞給listFiles。您可以創建一個只按照您指定的方式過濾掉圖像文件的文件。

編輯:而你想用getAbsolutePath()作爲createFromPath的參數。

0

這裏是只拿到.png格式代碼,.jpg文件以及包含floders

private File[] listValidFiles(File file) { 
    return file.listFiles(new FilenameFilter() { 

     @Override 
     public boolean accept(File dir, String filename) { 
      File file2 = new File(dir, filename); 
      return (filename.contains(".png") || filename.contains(".jpg") || file2 
        .isDirectory()) 
        && !file2.isHidden() 
        && !filename.startsWith("."); 

     } 
    }); 
} 
相關問題