【问题标题】:Loading images from folder path into a grid view, Android将图像从文件夹路径加载到网格视图中,Android
【发布时间】:2014-02-27 10:15:00
【问题描述】:

您好,我遇到了一个问题。我找不到允许我加载所有内容的工作示例 将一个文件夹中的图像放入网格视图中。 我有一个工作网格视图,但我必须通过带有 R.drawable.theImageName 的 int 数组加载图像 我需要的是一个功能,可以将所有图像加载到网格中,而无需知道图像的名称。 我已经按照本教程创建了网格视图http://www.youtube.com/watch?v=Y75i3U7X-ng

Tnx 寻求帮助 如果我忘记了什么,我对应用程序编程操作系统有点陌生,请告诉我,我会尝试粘贴代码。

GridView gv = (GridView) findViewById(R.id.car_gridView);
    gv.setAdapter(new CarImageAdapter(getApplicationContext()));

.

private Context context;
public CarImageAdapter(Context applicationContext) {
        // TODO Auto-generated constructor stub
        context = applicationContext;
    }

.

    public View getView(int position, View contentView, ViewGroup parrent) {
    // TODO Auto-generated method stub
    ImageView iv;
    if(contentView != null)
    {
        iv = (ImageView) contentView;
    }
    else
    {
        iv = new ImageView(context);
        iv.setLayoutParams(new GridView.LayoutParams(300, 300));
        iv.setScaleType(ScaleType.CENTER_CROP);
        iv.setPadding(8, 8, 8, 8);

    }

    iv.setImageResource(car_images[position]);  
    return iv;
}

我正在使用它来创建和保存图像。

    public void captureImage()
{
    ImageView imageView = (ImageView) findViewById(R.id.img_resultimage);

    root = Environment.getExternalStorageDirectory().toString() + "/Upgrade_rim";
    imageFolderPath = root + "/car_images";
    File imagesFolder = new File(imageFolderPath);
    imagesFolder.mkdirs();


    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
    imageName = "car_"+timeStamp +".png";


    File image = new File(imageFolderPath, imageName);
    fileUri = Uri.fromFile(image);
    imageView.setTag(imagesFolder + File.separator + imageName);
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
    startActivityForResult(takePictureIntent, CAMERA_IMAGE_REQUEST);

}

【问题讨论】:

  • 就像你只想要手机上的所有照片吗?
  • 我会给你代码来获取所有图片,然后你将能够在网格中显示,你的问题会解决吗

标签: android gridview directory


【解决方案1】:

我列出了存储在 sdcard 根文件夹中的所有 png 文件。我已经用 PDF 文件成功地做到了这一点。

public class Sdcard_pdf_list extends ListActivity {

    String[] pdflist;
    File[] imagelist;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        File images = Environment.getExternalStorageDirectory();
        imagelist = images.listFiles(new FilenameFilter() {

            public boolean accept(File dir, String name) 
            {
                return ((name.endsWith(".png")));
            }

        });

        pdflist = new String[imagelist.length];
        for (int i = 0; i < imagelist.length; i++) {

            pdflist[i] = imagelist[i].getName();

        }
        this.setListAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, pdflist));

    }

}

如果您有任何疑问,请随时填写。

【讨论】:

  • 我在这里使用过列表活动。你也可以改用gridview。
  • 当我执行类似 String root = Environment.getExternalStorageDirectory().toString() + "/Upgrade_rim/car_images";
【解决方案2】:

一种选择是使用 Assets 文件夹。

将所有图片放在一个文件夹中,例如资产文件夹中的“产品”。

我使用 ImageView 来显示图像。您可以相应地将其更改为gridview。

然后给你:

public class Assets_Folder_Img extends Activity 
{

    ArrayList<String> arr_Img = new ArrayList<String>();
    String ASSET_FOLDER_NAME="products";
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_assets__folder__img);

        get_images_in_List(ASSET_FOLDER_NAME);
        setImages();
    }

    void setImages()
    {

        InputStream is = null;

        for(int i=0;i<arr_Img.size();i++)
        {
            try 
            {
                is = getAssets().open(ASSET_FOLDER_NAME+"/" +arr_Img.get(i));
            } 
            catch (IOException e) 
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            Bitmap bit = BitmapFactory.decodeStream(is);

            LinearLayout ll = (LinearLayout)findViewById(R.id.root);

                ImageView image = new ImageView(this);
                image.setLayoutParams(new android.view.ViewGroup.LayoutParams(120,120));
                image.setImageBitmap(bit);
                ll.addView(image);

        }
    }

     private void get_images_in_List(String folderName) 
        {
            try 
            {
                String [] list = getAssets().list(folderName);

                    arr_Img.addAll(Arrays.asList(list));
                    Log.e("log", "size is "+arr_Img.size());
            } 
            catch (IOException e) 
            {
                e.printStackTrace();
            }

        }
}

将图像放入资产中只是为了存储少量图像。否则会给应用程序带来负担。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-12
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多