본문 바로가기
안드로이드 자바

[Java][Android] 안드로이드 - 이미지 파일 불러오기

by teamnova 2021. 2. 3.

안녕하세요.

스틱코드를 활용하여 안드로이드 앨범에 있는 이미지를 불러와서 보여주는 예제를 만들어보겠습니다.

 

스틱코드란?

https://stickode.com/mainlogin.html


예제

먼저, build.gradle 파일안에 Glide라는 라이브러리를 사용하기 위해 아래 화면처럼 추가합니다.

 

Glide 라이브러리란? 이미지를 빠르고 쉽게 가져오는 라이브러리 입니다.

 

build.gradle -> dependencies 위치 안에 빨간 박스로 표시해둔 곳처럼 추가 해주시고 위에 Sync Now 버튼을 누르시면 라이브러리가 적용됩니다.

    // glide 라이브러리 추가 - 참고: https://github.com/bumptech/glide
    implementation 'com.github.bumptech.glide:glide:4.12.0'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'

다음 AndroidManifest.xml 파일 안에 파일을 불러오기 위한 권한을 추가해줍니다.

 

권한을 추가하는 이유는 파일 접근 권한 설정을 안할 경우 이미지 파일을 불러올 때 에러가 발생하기 때문입니다.

 

    <!-- 저장 파일에 접근하기 위한 퍼미션 설정 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

 XML 만들기

보여줄 화면을 XML에 선언합니다.

<activity_main.xml>

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

    <TextView
        android:id="@+id/main_title"
        android:layout_width="209dp"
        android:layout_height="53dp"
        android:layout_marginTop="64dp"
        android:text="이미지 불러오기"
        android:textAlignment="center"
        android:textSize="30dp"
        android:textStyle="bold"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <ImageView
        android:id="@+id/main_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="216dp"
        android:src="@drawable/ic_launcher_background"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.498"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:srcCompat="@tools:sample/avatars" />

    <Button
        android:id="@+id/main_button"
        android:layout_width="176dp"
        android:layout_height="68dp"
        android:layout_marginBottom="176dp"
        android:text="이미지 불러오기"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

<MainActivity>

 

이미지 파일을 화면에 보여주기 위해 이미지뷰 객체를 생성합니다.

findViewById() : xml에 생성한 id 값을 가져 오기 위한 기능이며, 주로 화면값을 변경할 때 사용합니다.

ImageView imageView = findViewById(R.id.);

 

다음은 이미지 파일을 불러올 버튼을 생성합니다.

버튼을 생성하고 이벤트를 추가하기 위해 여러가지 코드들을 입력을 해야합니다.

스틱코드를 활용한다면, 'bu'까지만 작성 했을 때 버튼 클릭 이벤트가 나타납니다.

버튼 이벤트를 클릭하면 코드가 한번에 작성이 되서 편리합니다.

변수명, xml에 작성된 버튼의 id 값만 변경하면 되니 빠르게 코딩이 가능합니다.

예시)

 

다음은 이미지 파일을 불러오는 인텐트를 생성합니다.

앨범에 있는 이미지를 가져 오기 위해서는 안드로이드에서 제공해주는 인텐트라는 기능을 사용해서 가져와야합니다.

스틱코드를 사용하여 '이미지 파일 불러오기'를 클릭하면 아래와 같이 코드가 자동으로 생성이 됩니다.

 

다음은 선택한 이미지 정보를 가져오기 위해 '인텐트 결과값 호출'를 클릭합니다.

 

클릭하면 아래 사진과 같이 코드가 자동으로 생성이 됩니다.

 

다음은 선택한 이미지를 화면에 보여주기 위해 'Glide 라이브러리 load 호출'를 클릭합니다.

 

클릭하면 아래 사진과 같이 코드가 자동으로 생성이 됩니다.

아래 코드에서 load()에는 선택 이미지 정보를 넣으면 되는데, 여기에서는 data.getData()를 넣어주면 됩니다.

override()는 이미지 가로, 세로 크기를 설정하시면 되고, 필요없다면 빼도 상관 없습니다.

into(): 화면에 보여줄 이미지 뷰 객체를 넣어 줍니다.

 

예시)

 

여기까지 마치면, 이미지 불러오기 버튼을 클릭해서 앨범에 있는 이미지를 선택하면 아래 사진과 같이 앱 화면에 출력되는 것을 확인할 수 있습니다.

 

이미지 불러오기 실행 결과

활용한 스틱 코드

 

이미지 파일 저장/불러오기 기능 모음집 - stickode.com/detail.html?no=1875

 

버튼 이벤트 - stickode.com/detail.html?no=1885