簡體   English   中英

將Parcelable設置為ImageView圖像

[英]Setting a Parcelable as an ImageView image

我一直在使用這個庫https://android-arsenal.com/details/1/4072從圖庫和相機獲取圖像以設置為個人資料圖片。

    TextView chooseImageTextView = (TextView) findViewById(R.id.signUp_uploadPicture_textView);
    chooseImageTextView.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    ImagePicker.create((Activity) SignUpActivity.this)
                            .folderMode(true)
                            .folderTitle("Select image folder")
                            .imageTitle("Select image")
                            .single()
                            .showCamera(true)
                            .imageDirectory("Camera - Bond Messenger")
                            .start(REQUEST_CODE_PICKER);
                }
            }
    ); 

它一直工作得很好,但是結果圖像是從庫中導入的Image類型的Parcelable ArrayList,所以這里出現了問題

    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_CODE_PICKER && resultCode == RESULT_OK && data != null) {

        ArrayList<Image> images = data.getParcelableArrayListExtra(ImagePickerActivity.INTENT_EXTRA_SELECTED_IMAGES);

        profilePictureCircleImageView.setImageBitmap(images.get(0));
    }
}

我在嘗試將結果Image設置為profilePictureCircleImageView的Image時遇到錯誤

所以我試過將其強制轉換為Bitmap,BitmapDrawable和Drawable,但均無效果

有什么幫助嗎? 謝謝

快速瀏覽提供的庫的源代碼可發現Image類不是來自android包android.media.Image

從github上的庫中查看Image.class

因此,由於該類包含圖像的路徑,因此您可以執行以下操作。

Bitmap bmImg = BitmapFactory.decodeFile(images.get(0).getPath());
profilePictureCircleImageView.setImageBitmap(bmImg);

返回的不是實際圖像,而是一個保存圖像路徑的對象。 您必須手動加載它:

String path = images.get(i).getPath()

Bitmap bitmap = BitmapFactory.decodeFile(path, null);

profilePictureCircleImageView.setImageBitmap(bitmap);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM