메뉴 건너뛰기

조회 수 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 MediaPlayer 클래스 사용법 file 2018.10.02 1812
196 prepend(),append(),before(),after() 메서드 2014.10.20 7364
195 ScrollView의 활용 2015.07.16 6541
194 setContentView()와 레이아웃 전개자(LayoutInflater) 2021.03.31 269
193 TextureView를 이용한 카메라 Preview 좌우 반전 2015.06.10 14259
192 This Handler class should be static or leaks might occur 시 해결법 2020.12.14 243
191 URL을 이용해서 이미지 다운로드 하기 2015.07.16 7420
190 URL을 이용해서 이미지 다운로드 하기 (멀티 쓰레드 이용) file 2015.07.16 8997
189 ViewFlipper 사용하기 file 2015.07.16 9639
188 Virtual Device , 디자인 화면 file 2021.03.31 265
187 Volley 로 웹요청하고 응답받기1 - Get방식 file 2020.12.14 350
186 Volley 로 웹요청하고 응답받기2 - Post방식 , 로그인-회원가입 (php,mysql 연동) file 2020.12.14 1450
185 Volley 로 웹요청하고 응답받기3 - Get방식 , json 읽기 (php,mysql) file 2020.12.14 388
184 Volley 이용시에 한글 깨질때 UTF-8로 변경 2020.12.14 355
183 WebView 작업할때 Net::ERR_UNKNOWN_URL_SCHEME 에러 발생할때 (전화걸기,문자보내기 안된다) 2020.12.14 1083
182 WebView 줌 컨트롤러 가리기 2014.08.28 6319
181 WebView를 사용할때 HttpClient를 이용한 Session 유지 2018.12.27 4396
180 WebView에서 카메라 및 이미지 업로드 (선택적용가능) file 2020.12.14 2741
179 WIFI 신호세기 강도 측정하기 2014.08.28 11248
178 XmlPullParser 를이용하여 데이터 가져와보기!! 2014.08.28 7228
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 13 Next
/ 13

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved