试图从SD卡android

时间:2015-09-05 19:58:47

标签: java android image

我想做什么:

我正在尝试在创建应用程序时将所有图像加载到手机SD卡上。然后我有一个按钮,当我点击按钮时,下一个图像应显示。

我做了什么:

到目前为止,我已将此代码包含在 onCreate()方法中,但我不知道如何将多个图像添加到文件夹中。

 File sdCardDirectory = Environment.getExternalStorageDirectory();
    File image = new File(sdCardDirectory, "uct.png");
    boolean success = false;

    // Encode the file as a PNG image.
    FileOutputStream outStream;
    try {

        outStream = new FileOutputStream(image);
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, outStream);
    /* 100 to keep full quality of the image */
        outStream.flush();
        outStream.close();
        success = true;
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

目前我有一系列图像ID,此刻这些图像存储在Drawable文件夹中。

int[] images = {R.drawable.img1,R.drawable.img2,R.drawable.img3,R.drawable.img4};

然后我有一个 onClick()方法,它增加私有索引变量以设置像这样的图像资源(这里imgView是ImageView)。

imgView.setImageResource(images[current_image_index]);

我不知道该怎么做:

首先,我不知道如何在onCreate()方法中将多个图像添加到SD卡。此外,我不确定最好的方法是加载正确的'单击按钮时来自SD的图像。

我希望这是有道理的,请说明是否有任何需要澄清的事情。

1 个答案:

答案 0 :(得分:0)

如果我在你的情况下,

  1. 创建ViewPager以显示所有图像。

  2. 您可以使用此代码获取所有图片网址。

        String[] STAR = {"*"};
        ArrayList<String> imageUri = new ArrayList<>();
    
        Cursor cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI
                , STAR, null, null, null);
    
        if (cursor != null) {
            if (cursor.moveToFirst()) {
                do {
                    String path = cursor.getString(cursor
                            .getColumnIndex(MediaStore.Images.Media.DATA));
    
                    Log.i("Path", path);
                    imageUri.add(path);
                    getDate(path);
    
                } while (cursor.moveToNext());
    
            }
    
        }
    
  3. 您可以将imageUri ArrayList传递给Viewpager适配器。在viewPager中 你可以使用任何图像库来加载图像。如果是Picasso

    Picasso.with(上下文)      .load(URI)      .resize(150150)      .centerCrop()      .into(ImageView的);