1

I got problem with my image loading in my Fragment, when i chose place to search for image and pick the picture instead of it i get the black circle, this is my code:

civ = view.findViewById(R.id.circle_profile);

civ.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent GaleryIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        startActivityForResult(GaleryIntent, RESULT_LOAD_IMAGE);
    }
});

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == RESULT_LOAD_IMAGE && resultCode == getActivity().RESULT_OK && null != data) {
        Uri selectedImage = data.getData();
        String[] filePathColumn = { MediaStore.Images.Media.DATA };
        Cursor cursor = getActivity().getContentResolver().query(selectedImage,filePathColumn, null, null, null);
        cursor.moveToFirst();
        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
        String picturePath = cursor.getString(columnIndex);
        cursor.close();
        CircleImageView imageView =  getActivity().findViewById(R.id.circle_profile);
        imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));
    }
}

XML:

<de.hdodenhof.circleimageview.CircleImageView
    android:layout_width="70dp"
    android:layout_height="70dp"
    android:layout_column="0"
    android:layout_row="1"
    android:layout_rowSpan="3"
    android:layout_marginLeft="30dp"
    android:layout_columnWeight="1"
    android:id="@+id/circle_profile"
    android:src="@drawable/profile"
    app:civ_border_color="#FFFFFF"
    app:civ_border_width="2dp"
    />

It's looks like the border color only left

1 Answers1

0

I suspect that in your code: BitmapFactory.decodeFile(picturePath) returns null maybe because the size of image is large

I suggest using BitmapFactory.Options and pass it inside decodeFile function with BitmapFactory.Options as second parameter.

EDIT:

BitmapFactory.Options can have code like below:

// Get the dimensions of the bitmap
    BitmapFactory.Options bmOptions = new BitmapFactory.Options();
    bmOptions.inJustDecodeBounds = true;


   BitmapFactory.decodeFile(picturePath, bmOptions);

int photoW= bmOptions.outWidth;
int photoH = bmOptions.outHeight;

// Get the dimensions of the View
    int targetW = imageView.getWidth();
    int targetH = imageView.getHeight();

//Determine how much to scale down the image
int scaleFactor = Math.min(photoW/targetW, photoH/targetH);

//Decode the image file into a Bitmap sized to fill the view
bmOptions.inJustDecodeBounds = false;
bmOptions.inSampleSize = scaleFactor;
bmOptions.inPurgeable = true;

Bitmap bitmap = BitmapFactory.decodeFile(picturePath, bmOptions);
imageView.setImageBitmap(bitmap);

Hope it helps!

Firoz Memon
  • 3,027
  • 2
  • 17
  • 28