1. 기본 갤러리를 불러오기
xml 파일은 따로 제공하지 않고 버튼과 ImageView id 값만 맞춰주면 됩니다.
public class MainActivity extends Activity { final int REQ_CODE_SELECT_IMAGE=100; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
Button picture = (Button) findViewById(R.id.Btn_Find); picture.setOnClickListener(new OnClickListener(){
public void onClick(View v){ // 클릭하면 ACTION_PICK 연결로 기본 갤러리를 불러옵니다.
Intent intent = new Intent(Intent.ACTION_PICK); intent.setType(android.provider.MediaStore.Images.Media.CONTENT_TYPE); intent.setData(android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(intent, REQ_CODE_SELECT_IMAGE); }
}); }
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Toast.makeText(getBaseContext(), "resultCode : "+resultCode,Toast.LENGTH_SHORT).show();
if(requestCode == REQ_CODE_SELECT_IMAGE) { if(resultCode==Activity.RESULT_OK) { try { //Uri에서 이미지 이름을 얻어온다. //String name_Str = getImageNameToUri(data.getData()); //이미지 데이터를 비트맵으로 받아온다. Bitmap image_bitmap = Images.Media.getBitmap(getContentResolver(), data.getData()); ImageView image = (ImageView)findViewById(R.id.SelectedImage); //배치해놓은 ImageView에 set image.setImageBitmap(image_bitmap);
//Toast.makeText(getBaseContext(), "name_Str : "+name_Str , Toast.LENGTH_SHORT).show();
} catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } } }
public String getImageNameToUri(Uri data) { String[] proj = { MediaStore.Images.Media.DATA }; Cursor cursor = managedQuery(data, proj, null, null, null); int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); String imgPath = cursor.getString(column_index); String imgName = imgPath.substring(imgPath.lastIndexOf("/")+1); return imgName; }
} |
2. 이미지 자르기 (Crop)
위의 소스를 참고하시고 Crop 기능만 추가해 보겠습니다.
public class MainActivity extends Activity{ private static final int PICK_FROM_CAMERA = 0; private static final int PICK_FROM_ALBUM = 1; private static final int CROP_FROM_CAMERA = 2;
private static final String TEMP_FILE_NAME = "tempFile.jpg"; private static final String TYPE_IMAGE = "image/*"; private Uri mImageCaptureUri; private Uri mTempImageUri;
private ImageView mPhotoImageView; private Button mButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Btn_Find.setOnTouchListener(new OnTouchListener() {
} private File getTempFile(){
|
함수 정리 :
Drawable d =new BitmapDrawable(image_bitmap); //비트맵으로 받은 것을 레이아웃 백그라운드로 설정합니다.
레이아웃ID.setBackgroundDrawable(d);
-----
스크린 샷은 따로 첨부하지 않겠습니다.
'프로그래밍 > android' 카테고리의 다른 글
안드로이드 음성 인식, 합성 정리 (0) | 2017.03.23 |
---|---|
안드로이드 wifi 자동 연결(setting 설정) (0) | 2017.03.17 |
안드로이드 파일 탐색기 Type별 intent 호출 (0) | 2017.02.23 |
안드로이드 Intent Flag 정리(Activity 관리) (1) | 2017.02.10 |
안드로이드 스튜디오 jar,aar 파일 import (0) | 2017.02.09 |
안드로이드 공유하기 활용(ACTION_SEND) (3) | 2017.02.08 |
안드로이드 패키지명 불러오기(설치된 앱) (0) | 2017.02.08 |
안드로이드 Fabric Crashlytics 이용하기(버그 리포트 기록 플러그인) (0) | 2017.02.06 |