Android 프로 그래 밍 은 시스템 갤러리 와 그림 자 르 기 기능 을 호출 합 니 다.
안 드 로 이 드 개발 에 서 는 시스템 갤러리 와 재단 사진 을 호출 하 는 것 이 흔 한 수요 다.자신 이 이러한 기능 을 실현 하 는 것 에 비해 직접 호출 시스템 은 많은 장점 을 가진다.예 를 들 어 스크린 의 적합 을 고려 하지 않 아 도 되 고 성능 문 제 를 걱정 하지 않 아 도 된다 는 등 이다.따라서 일반적인 수요 에 대해 시스템 의 기능 을 직접 호출 하고 간편 하고 효율 적 인 것 을 권장 합 니 다!
우선 위의 효과 그림:
1.시스템 갤러리 만 호출(재단 하지 않 음)하고 사용자 가 선택 한 그림 을 되 돌려 줍 니 다.(단일 선택 만 지원 합 니 다.다 중 선택 이 필요 하 다 면 스스로 실현 해 야 합 니 다.Android 프로 그래 밍 을 참고 하여 QQ 사진 선택 기(앨범 분류 에 따라 다 중 선택 추가)를 실현 할 수 있 습 니 다소스 코드)
1.시스템 갤러리 페이지 로 이동:
Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, SELECT_IMAGE);
2.onActivity Result 에서 시스템 갤러리 에서 되 돌아 오 는 정 보 를 받 습 니 다(즉,사용자 가 선택 한 사진).
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != RESULT_OK || data == null) {
return;
}
//select an image
if (requestCode == SELECT_IMAGE) {
//get image path from uri
String imagePath = getImagePath(data.getData());
return;
}
}
private String getImagePath(Uri selectedImage) {
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String imagePath = cursor.getString(columnIndex);
cursor.close();
System.out.println("image path:" + imagePath);
return imagePath;
}
2.시스템 갤러리 로 이동 하여 사진 을 선택 하고 재단 합 니 다.1.시스템 갤러리 로 이동:
//select image via system gallery, crop and save the new image file.
public void selectImageAndCrop(View view) {
//After cropping, the image file will be stored here!
cacheFile = imageCacheFolder + File.separator + "cache_" + System.currentTimeMillis() + ".jpg";
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
intent.putExtra("crop", "true");
//width:height
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("output", Uri.fromFile(new File(cacheFile)));
intent.putExtra("outputFormat", "JPEG");
startActivityForResult(Intent.createChooser(intent, "Choose Image"), SELECT_IMAGE_CROP);
}
이동 하기 전에 전달 해 야 할 데이터:(1)crop:true 를 전달 하고 시스템 을 재단 해 야 한 다 는 것 을 알려 줍 니 다.
(2)aspectX 와 aspectY:재단 상자 의 너비 와 높이.
(3)output:파일 경로 cacheFile 로 구 축 된 uri 를 전달 해 야 합 니 다.사용 자 는 갤러리 페이지 에서 사진 을 선택 한 후에 자동 으로 재단 페이지 에 들 어 갑 니 다.재단 한 후에 그림 은 cacheFile 이라는 위치 에 저 장 됩 니 다.
재단 이 완료 되면 onActivity Result 방법(resultCode 는 RESULTOK)또한 그림 은 cacheFile 이라는 위치 에 저장 되 기 때문에 이 파일 을 직접 사용 할 수 있 습 니 다.예 를 들 어 ImageView 의 자원 으로 설정 할 수 있 습 니 다.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != RESULT_OK) {
return;
}
//select an image and crop
if (requestCode == SELECT_IMAGE_CROP) {
//compress the original image to save memory.
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inSampleSize = 4;
imageView.setImageBitmap(BitmapFactory.decodeFile(cacheFile, opt));
}
}
더 많은 안 드 로 이 드 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.,,,,,,,본 고 에서 말 한 것 이 여러분 의 안 드 로 이 드 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.