如何从Image Arraylist中设置imageview?

时间:2016-11-17 21:56:40

标签: java android arraylist android-imageview android-image

我正在使用this库,但他们没有像github上的其他库那样解释所有细节。

创建

ImagePicker.create(this)
            .folderMode(true) // folder mode (false by default)
            .folderTitle("Folder") // folder selection title
            .imageTitle("Tap to select") // image selection title
            .single() // single mode
          // multi mode (default mode)
            .limit(10) // max images can be selected (99 by default)
            .showCamera(true) // show camera or not (true by default)
            .imageDirectory("Camera") // directory name for captured image  ("Camera" folder by default)
             // original selected images, used in multi mode
            .start(12); // start image picker activity with request code

它正在工作我可以看到画廊。

onActivityResult:

   @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        ImageView imageview = (ImageView)findViewById(R.id.iv1);
        if (requestCode == 12 && resultCode == RESULT_OK && data != null) {
            ArrayList<Image> images = data.getParcelableArrayListExtra(ImagePickerActivity.INTENT_EXTRA_SELECTED_IMAGES);
            // do your logic ....
            imageview.setImageBitmap(images);//It is not working, I know it is not bitmap but how to set?
        }
    }

最后如何设置imageview?

2 个答案:

答案 0 :(得分:0)

您无法将图像视图设置为图像的arraylist,您只能将图像视图设置为将一个图像作为源。

此外,看起来你正在主线程上处理你的图像,这也不是一个好主意。

您的图像位于数组中,但您必须在多个图像视图或显示多个图像的自定义视图中使用它们

答案 1 :(得分:0)

private Bitmap getScreenshot(Image image) {

    Image.Plane[] planes = image.getPlanes();
    ByteBuffer buffer = planes[0].getBuffer();

    int pixelStride = planes[0].getPixelStride();
    int rowStride = planes[0].getRowStride();
    int rowPadding = rowStride - pixelStride * mWidth;

    // ??????Bitmap???
    Bitmap bitmap = Bitmap.createBitmap(mWidth + rowPadding / pixelStride, mHeight, Bitmap.Config.RGB_565);
    bitmap.copyPixelsFromBuffer(buffer);
    image.close();

    return bitmap;
}

图像是资源而不是图像,但您可以使用上面的API通过使用ByteBuffer来获取位图。在getScreenshot(图像图像)中传递images.get(position)。它会返回位图,然后只需设置imageView.setImageBitmap(位图) Example link