Android遍历某个文件夹的图片并实现滑动查看的的Gallery
关键代码一个adapter
package com.su.houses.utils; import android.content.Context; import android.content.res.TypedArray; import android.net.Uri; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Gallery; import android.widget.ImageView; import com.su.houses.R; public class ImageAdapter extends BaseAdapter { private Context mContext; public String picpath; private String[] myImageNames; public ImageAdapter(Context c, String path) { mContext = c; picpath = path; myImageNames = FileUtil.getImageNames(picpath); } public int getCount() { return myImageNames.length; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return position; } public long getItemId(int position) { // TODO Auto-generated method stub return position; } public View getView(int position, View convertView, ViewGroup parent) { ImageView imageView = new ImageView(mContext); imageView.setImageURI(Uri.parse(picpath + "/" + myImageNames[position])); imageView.setLayoutParams(new Gallery.LayoutParams(800, 600)); imageView.setScaleType(ImageView.ScaleType.FIT_CENTER); return imageView; } }
然后其中的一些方法
public static String[] getImageNames(String folderPath) { File file01 = new File(folderPath); String[] files01 = file01.list(); int imageFileNums = 0; for (int i = 0; i < files01.length; i++) { File file02 = new File(folderPath + "/" + files01[i]); if (!file02.isDirectory()) { if (isImageFile(file02.getName())) { imageFileNums++; } } } String[] files02 = new String[imageFileNums]; int j = 0; for (int i = 0; i < files01.length; i++) { File file02 = new File(folderPath + "/" + files01[i]); if (!file02.isDirectory()) { if (isImageFile(file02.getName())) { files02[j] = file02.getName(); j++; } } } return files02; } private static boolean isImageFile(String fileName) { String fileEnd = fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length()); if (fileEnd.equalsIgnoreCase("jpg")) { return true; } else if (fileEnd.equalsIgnoreCase("png")) { return true; } else if (fileEnd.equalsIgnoreCase("bmp")) { return true; } else { return false; } }然后在实例化adapter在界面的gallery显示
Gallery g = (Gallery) findViewById(R.id.house_gallery); g.setAdapter(new ImageAdapter(this,"/mnt/sdcard/k/a/"));也可以添加listener
g.setOnItemSelectedListener(new OnItemSelectedListener() { // 选择图片的事件 public void onItemSelected(AdapterView<?> arg0, View arg1, int position, long id) { // 获取当前图片文件名 currentImageName = myImageNames[position]; // 获取当前图片路径 currentImagePath = currentFolderPath + "/" + currentImageName; // 设置imageSwitcher的显示图片 } public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub }