반응형

 

이미지뷰를 클릭하면 갤러리 또는 포토에 있는 이미지를 가져와 이미지뷰에 보여주는 예제입니다.

 

작성  2019. 2. 20

수정  2019. 4. 25




1. 실행시키면 이미지 뷰에 미리 지정해놓은 디폴트 이미지가 보입니다.

 




2. 이미지뷰를 터치하면 이미지를 불러올 앱을 물어봅니다.

포토 또는 갤러리를 선택할 수 있습니다.

 




3.  앞에서 선택한 앱에서 고를 수 있는 이미지를 보여줍니다.

 




4. 선택한 이미지를 이미지뷰에 보여줍니다.

 





다음 과정을 통해 이미지뷰 클릭시 이미지를 로드하는 예제를 작성해볼 수 있습니다.



1. 아래 첨부된 svg 이미지를 다운로드 받습니다.

 

image.zip
0.00MB



2.  svg 이미지를 프로젝트의 drawable 폴더에 추가해야 합니다.

 

프로젝트 창에서 app을 선택하고  마우스 오른쪽 버튼을 클릭했을 때

보이는 메뉴에서 New > Vector Asset를 선택합니다.  

 




3. 다음 항목들을 선택하고 Next 버튼을 클릭합니다.

 

Asset Type 항목에서 Local file(SVG, PSD)를 선택합니다.

Path 항목에 있는 폴더 아이콘을 클릭하여 다운로드 받아둔 SVG 이미지 파일을 선택합니다.

Size 항목에 있는 Override를 체크합니다.

 




4. Finish 버튼을 클릭하면 SVG 파일이  프로젝트에 추가됩니다.

 

 




5.  activity_main.xml 레이아웃 파일에 ImageView를 추가합니다.  

 

android:scaleType 속성을 fitCenter로 하면 이미지뷰의 크기에 맞추어 이미지 크기가 조정됩니다.  

app:srcCompat 속성에 drawable 폴더에 추가한 이미지를 지정합니다. 이미지뷰에 디폴트로 보여지게될 이미지입니다.

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">

<ImageView
   android:id="@+id/imageView"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:scaleType="fitCenter"
   android:layout_gravity="center_vertical|center_horizontal"
   app:srcCompat="@drawable/ic_image" />

</LinearLayout>




6. 이미지 뷰의 클릭 이벤트가 발생할시 갤러리 또는 포토에서  이미지를 선택하여 이미지뷰에 넣는 코드를 작성합니다.

 

package com.tistory.webnautes.pickimageformgallery;

import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;


public class MainActivity extends AppCompatActivity {

   private final int GET_GALLERY_IMAGE = 200;
   private ImageView imageview;


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

       imageview = (ImageView)findViewById(R.id.imageView);
       imageview.setOnClickListener(new View.OnClickListener() {
           public void onClick(View v) {

               Intent intent = new Intent(Intent.ACTION_PICK);
               intent. setDataAndType(android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
               startActivityForResult(intent, GET_GALLERY_IMAGE);
           }
       });
   }


   @Override
   protected void onActivityResult(int requestCode, int resultCode, Intent data) {

       if (requestCode == GET_GALLERY_IMAGE && resultCode == RESULT_OK && data != null && data.getData() != null) {

           Uri selectedImageUri = data.getData();
           imageview.setImageURI(selectedImageUri);

       }

   }
}




반응형

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.

도움이 되셨다면 토스아이디로 후원해주세요.
https://toss.me/momo2024


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts