1. xml
ImageView를 클릭하였을 때 Gallery Activity릃 실행한 뒤 사진을 선택하고 예제 앱 액티비티로 돌아왔을 때 ImageView에 해당 사진을 표현하도록 하겠습니다.
2. java
- 갤러리 액티비티로부터 가져온 결과 데이터를 처리하기 위해 StartActivityForResult() 함수를 통해 액티비티를 실행해줍니다.
- 갤러리 액티비티로부터 결과 데이터를 처리하기 위해서는 onActivityResult() 함수를 오버라이딩합니다.
- 해당 함수의 인자는 3개입니다.
- 첫 번째 인자 RequestCode는 StartActivityForResult() 함수의 두 번째 인자로 넘겨줬던 값과 동일한 값이 넘어옵니다. 두 번째 인자는 resultCode로 사진을 정상적으로 선택하였다면 RESULT_OK 값이 넘어오며 뒤로가기 버튼으로 작업을 취소한 경우 RESULT_CANCELED 값이 넘어옵니다. 해당 코드값을 확인하여 액티비티에서 적절한 처리를 해주면됩니다. 마지막 세 번째 인자로 갤러리 액티비티로부터 넘어온 결과 데이터가 담겨있는 Intent 객체입니다.
public class Imgdel extends AppCompatActivity {
private static final int REQUEST_CODE = 0;
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.delimg);
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();
}
}
}
}
3. 결과
'■ Android > Tip' 카테고리의 다른 글
[Android] 애니메이션 - 2.트윈 애니메이션 (0) | 2020.03.06 |
---|---|
[Android] 애니메이션 - 1.스레드 애니메이션 (0) | 2020.03.06 |
[Android] 팔레트(Palette API로 색상 선택) (0) | 2020.03.05 |
[Android] VectorDrawable(벡터 드로어블) 사용법 (0) | 2020.03.04 |
[Android] 나인 패치(9-Patch) 사용법 - (이미지 늘려도 괜찮아짐) (0) | 2020.03.04 |