1. 程式人生 > >獲取android sd卡中某個資料夾下的所有圖片

獲取android sd卡中某個資料夾下的所有圖片

由於最近的一個專案中需要獲取某個資料夾下的所有.txt檔案,所以自己研究了一個獲取sd卡中某個目錄下的所有圖片格式的圖片路徑

先看效果圖:


詳細程式碼如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
    
    <ListView 
        android:id="@+id/lv_show_path"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:divider="@android:color/darker_gray"
        android:dividerHeight="1dp"
        ></ListView>

</RelativeLayout>

package com.xwj.testfilepath;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import android.os.Bundle;
import android.os.Environment;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends Activity {

	private ArrayAdapter<String> adapter;
	private ListView mShowPathLv;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		mShowPathLv = (ListView) findViewById(R.id.lv_show_path);
		adapter = new ArrayAdapter<String>(this,
				android.R.layout.simple_expandable_list_item_1);
		adapter.addAll(getImagePathFromSD());
		mShowPathLv.setAdapter(adapter);
	}

	/**
	 * 從sd卡獲取圖片資源
	 * @return
	 */
	private List<String> getImagePathFromSD() {
		// 圖片列表
		List<String> imagePathList = new ArrayList<String>();
		// 得到sd卡內image資料夾的路徑   File.separator(/) 
		String filePath = Environment.getExternalStorageDirectory().toString() + File.separator
				+ "image";
		// 得到該路徑資料夾下所有的檔案
		File fileAll = new File(filePath);
		File[] files = fileAll.listFiles();
		// 將所有的檔案存入ArrayList中,並過濾所有圖片格式的檔案
		for (int i = 0; i < files.length; i++) {
			File file = files[i];
			if (checkIsImageFile(file.getPath())) {
				imagePathList.add(file.getPath());
			}
		}
		// 返回得到的圖片列表
		return imagePathList;
	}

	/**
	 * 檢查副檔名,得到圖片格式的檔案
	 * @param fName  檔名
	 * @return
	 */
	@SuppressLint("DefaultLocale")
	private boolean checkIsImageFile(String fName) {
		boolean isImageFile = false;
		// 獲取副檔名
		String FileEnd = fName.substring(fName.lastIndexOf(".") + 1,
				fName.length()).toLowerCase();
		if (FileEnd.equals("jpg") || FileEnd.equals("png") || FileEnd.equals("gif")
				|| FileEnd.equals("jpeg")|| FileEnd.equals("bmp") ) {
			isImageFile = true;
		} else {
			isImageFile = false;
		}
		return isImageFile;
	}

}