메뉴 건너뛰기

조회 수 670 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

1. /res/layout/activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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">

    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@mipmap/ic_launcher" />

</android.support.constraint.ConstraintLayout>

▼ 갤러리에서 가져온 사진을 표현하기 위해 ImageView 위젯 하나를 배치하였습니다. 해당 예제에서는 화면에 배치되어 있는 ImageView를 클릭하였을 때 Gallery Activity릃 실행한 뒤 사진을 선택하고 예제 앱 액티비티로 돌아왔을 때 ImageView에 해당 사진을 표현하도록 하겠습니다. 


2. MainActivity.java

public class MainActivity extends AppCompatActivity {

    private static final int REQUEST_CODE = 0;
    private ImageView imageView;

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

        imageView = findViewById(R.id.image);

        imageView.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
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        if(requestCode == REQUEST_CODE)
        {
            if(resultCode == RESULT_OK)
            {
                try{
                    InputStream in = getContentResolver().openInputStream(data.getData());

                    Bitmap img = BitmapFactory.decodeStream(in);
                    in.close();

                    imageView.setImageBitmap(img);
                }catch(Exception e)
                {

                }
            }
            else if(resultCode == RESULT_CANCELED)
            {
                Toast.makeText(this, "사진 선택 취소", Toast.LENGTH_LONG).show();
            }
        }
    }
}

▼ onCreate() 함수에서는 imageView가 클릭되었을 때 동작 처리를 위한 Click Listener를 생성한 뒤 setOnClickListener() 함수를 통해 생성된 리스너를 등록합니다. onClick() 함수에서는 Intent 객체를 생성하고 갤러리 액티비티 실행하기 위한 정보를 Setting합니다. 갤러리 액티비티로부터 가져온 결과 데이터를 처리하기 위해  StartActivityForResult() 함수를 통해 액티비티를 실행해줍니다. 

 

▼ 갤러리 액티비티로부터 결과 데이터를 처리하기 위해서는 onActivityResult() 함수를 오버라이딩합니다. 해당 함수의 인자는 3개입니다. 첫 번째 인자 RequestCode는 StartActivityForResult() 함수의 두 번째 인자로 넘겨줬던 값과 동일한 값이 넘어옵니다. 두 번째 인자는 resultCode로 사진을 정상적으로 선택하였다면 RESULT_OK 값이 넘어오며 뒤로가기 버튼으로 작업을 취소한 경우 RESULT_CANCELED 값이 넘어옵니다. 해당 코드값을 확인하여 액티비티에서 적절한 처리를 해주면됩니다. 마지막 세 번째 인자로 갤러리 액티비티로부터 넘어온 결과 데이터가 담겨있는 Intent 객체입니다.

 

List of Articles
번호 제목 날짜 조회 수
197 [안드로이드스튜디오] 단축키 2015.07.02 7171
196 안드로이드 스튜디오 - 줄번호 표시하기 1 file 2015.07.03 7772
195 안드로이드 스튜디오 자동 임포트 하기 file 2015.07.09 7124
194 안드로이드 스튜디오 - rendering problem 해결법 file 2015.07.10 7666
193 Android 간단한 회원 가입 폼 만들기 for Mac (PHPMyAdmin 이용) file 2015.07.10 10517
192 [DB] 서버/클라이언트 소켓 통신하기 2015.07.13 20590
191 [DB]Android - DB 연동 기술 정리 2015.07.13 13815
190 안드로이드와 mysql 연동시키기. php 와 json 사용 file 2015.07.16 24521
189 안드로이드에서 JSP 를 사용하여 mysql 연동하기 2015.07.16 11693
188 서버에서 이미지 불러와서 이미지뷰에 띄우기 file 2015.07.16 9855
187 월별 캘린더에 일정 입력 및 조회 기능 리스트로 추가하기 file 2015.07.16 18568
186 ListView 사용시 특정 뷰로 생성 ( 그림 + 텍스트 ) file 2015.07.16 7482
185 이미지 버튼 설정 2015.07.16 6387
184 Android Login and Registration with PHP, MySQL and SQLite file 2015.07.16 14181
183 안드로이드 android 개발 와이파이 유지 관련 2015.07.16 7054
182 서비스가 실행중인지 알아보는 방법 2015.07.16 6560
181 인텐트를 이용한 Activity간 데이터 전달 (사용자 정의 클래스) file 2015.07.16 7097
180 URL을 이용해서 이미지 다운로드 하기 2015.07.16 7420
179 URL을 이용해서 이미지 다운로드 하기 (멀티 쓰레드 이용) file 2015.07.16 8997
178 ViewFlipper 사용하기 file 2015.07.16 9639
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 13 Next
/ 13

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved