안 드 로 이 드 는 사용자 프로필 사진 교체 작업 을 실현 합 니 다.
사용자 가 사용 하 는 것 처럼 코드 의 실현 도 조작 순서에 따라 점차적으로 전개 된다.다음 그림:
다음은 코드 를 설명 하 겠 습 니 다.
1.액자 선택 앨범 또는 사진
비교적 간단 한 방법 은 바로 AlertDialog 팝 업 옵션 을 사용 하여 사용자 가 선택 할 수 있 도록 하 는 것 이다.
public static void showImagePickDialog(final Activity activity){
String title = " ";
String[] items = new String[]{" "," "};
new AlertDialog.Builder(activity)
.setTitle(title)
.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
switch (which){
case 0:
//
pickImageFromCamera(activity);
break;
case 1:
//
pickImageFromAlbum(activity);
break;
default:
break;
}
}
}).show();
}
2.시스템 카메라 호출
시스템 카 메 라 를 호출 하기 전에 사용자 정의 경로 의 그림 Uri 를 입력 해 야 합 니 다.사진 을 찍 을 그림 을 지정 하여 이 Uri 에 저장 해 야 합 니 다.돌아 올 때 getData()를 사용 하면 압축 된 Bitmap 데 이 터 를 가 져 옵 니 다.
public static void pickImageFromCamera(final Activity activity){
// Uri
imageUriFromCamera = getImageUri();
Intent intent = new Intent();
intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUriFromCamera);
activity.startActivityForResult(intent,REQUEST_CODE_FROM_CAMERA);
}
3.시스템 앨범 열기시스템 앨범 을 직접 호출 하고 데 이 터 를 되 돌려 줍 니 다.
public static void pickImageFromAlbum(final Activity activity){
// ,
Intent intent = new Intent();
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
activity.startActivityForResult(intent,REQUEST_CODE_FROM_ALBUM);
}
4.그림 을 되 돌려 주 는 Uri 재단 작업사진 을 찍 고 돌아 오 는 것 에 대해 서 는 돌아 오 는 그림 을 직접 재단 하면 된다.앨범 을 선택 하고 돌아 오 려 면 먼저 원본 그림 을 사용자 정의 디 렉 터 리 에 복사 해 야 합 니 다(재단 작업 이 원본 그림 의 질 에 영향 을 미 치지 않도록).그리고 복 사 된 그림 을 재단 해 야 합 니 다.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode){
case ImageUtils.REQUEST_CODE_FROM_ALBUM: {
if (resultCode == RESULT_CANCELED) { //
return;
}
Uri imageUri = data.getData();
ImageUtils.copyImageUri(this,imageUri); //
ImageUtils.cropImageUri(this, ImageUtils.getCurrentUri(), 200, 200); //
break;
}
case ImageUtils.REQUEST_CODE_FROM_CAMERA: {
if (resultCode == RESULT_CANCELED) { //
ImageUtils.deleteImageUri(this, ImageUtils.getCurrentUri()); // Uri
}
ImageUtils.cropImageUri(this, ImageUtils.getCurrentUri(), 200, 200); //
break;
}
case ImageUtils.REQUEST_CODE_CROP: {
if (resultCode == RESULT_CANCELED) { //
return;
}
Uri imageUri = ImageUtils.getCurrentUri();
if (imageUri != null) {
imageView.setImageURI(imageUri); //
}
break;
}
default:
break;
}
}
이상 은 일부 코드 만 주 었 습 니 다.전체 코드 가 필요 한 학생 은 GitHub 에서 다운로드 할 수 있 습 니 다.https://github.com/ZhouCP/PhotoDemo
이상 은 본 고의 모든 내용 입 니 다.여러분 이 안 드 로 이 드 소프트웨어 프로 그래 밍 을 배 우 는 데 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.