달달한 스토리

728x90
반응형

프로필을 만드는 중에

 

갤러리에서 이미지만 가져오려고 여러 기능 들을 찾아보았다.

 

권한도 주고, 복잡한 기능들이 많았는데,

 

나는 간단히 갤러리에 사진만 가져올려고 했기 때문에,

 

이 정도로 힘든 작업인가.. 하고 망설여졌다.

 

그러다가 방법을 알아냈다.

 


해결책

 

정말 간단하다.

 

우선 갤러리에서 이미지를 가져올때,

 

이미지가 회전되어서 이미지 뷰에 담기는 현상이 있는데,

 

이러한 현상은 기기마다 다르다고 한다.

 

해결하는 방법은

 

글라이드 라이브러리를 통해서 이미지뷰에 이미지를 넣는 방법이 있다.

 

우선 라이브러리를 설치하자.

 

dependencies {
    implementation 'com.github.bumptech.glide:glide:3.7.0'
    }

그리고 난 후 

 

MainActiviy.java

 

public class MainActivity extends AppCompatActivity {

    Button button;
    ImageView imageView;

    //프로필 사진 요청코드
    private static final int REQUEST_CODE = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imageView = findViewById(R.id.imageView);

        button = findViewById(R.id.button);

        button.setOnClickListener(new View.OnClickListener() { //갤러리에 요청코드 보내기
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setType("image/*");
                intent.setAction(Intent.ACTION_GET_CONTENT);
                startActivityForResult(intent, REQUEST_CODE);
            }
        });
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == REQUEST_CODE) {
            if (resultCode == RESULT_OK) {
                try {
                    Uri uri = data.getData();
                    Glide.with(getApplicationContext()).load(uri).into(imageView); //다이얼로그 이미지사진에 넣기
                } catch (Exception e) {

                }
            } else if (resultCode == RESULT_CANCELED) {// 취소시 호출할 행동 쓰기
            }
        }
    }

}

 

버튼을 클릭했을 때, 인텐트를 통해 갤러리에 요청 코드를 보내고,

 

그 요청 코드는 onActivityResult에 응답받게 된다.

 

RESULT_OK까지 받으면,

 

Uri객체를 통해, 이미지 데이터를 전달받고,

 

이미지를 글라이드 라이브러리를 이용하여,

 

imageView에 입력한다.

 

activity_main.xml

 

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.308" />

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="200dp"
        android:layout_height="200dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.498"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.661"
        tools:srcCompat="@tools:sample/avatars" />
</androidx.constraintlayout.widget.ConstraintLayout>

 

그러하면 결과는 이렇게 나타난다.

 

 

 

이상으로 오늘 배운 이야기를 마친다.

 

아 그리고 한 가지가 더 있다.

 

phpmyadmin에 이 이미지를 저장하고, 불러오는 법을 알아보자.

 

다음 게시물에 올리겠다.

 

https://github.com/qjsqjsaos/Tistrory13

 

qjsqjsaos/Tistrory13

갤러리에서 이미지뷰 가져와 글라이드 라이브러리를 통해 이미지 삽입하기. Contribute to qjsqjsaos/Tistrory13 development by creating an account on GitHub.

github.com

 

 

728x90
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading