2017-10-16 4 views
0

画像を検索する場所を選択して画像を選択すると、自分の画像に問題があります。黒い円が表示されます。これは自分のコードです。写真の代わりに黒い画面が表示されます

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" 
    /> 

イッツ境界線の色のように見えるだけで、私はあなたのコードでいる疑いがある

+0

picturePathの値を確認しましたか? –

+0

私の見た目はきれいです –

+0

イメージピッカーライブラリを使用できます(例:https://github.com/esafirm/android-image-picker – Expiredmind

答えて

0

を左: BitmapFactory.decodeFile(picturePath)リターンを画像のサイズが大きいため、と表示される可能性があります。

BitmapFactory.Optionsを使用し、decodeFileの機能を第2パラメータとしてBitmapFactory.Optionsに渡してください。

EDIT:

BitmapFactory.Optionsは、以下のようなコードを持つことができます。

// 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); 

はそれが役に立てば幸い!

+0

そして、私はオプションとして何を与えるべきですか? –

+0

私はBitmapFactory.Optionsコードで私の答えを編集しました –

+0

picturePath私はこのように書くべきですか? "" @ drawable/profile " –

関連する問題