Android(安卓)头像修改
16lz
2021-12-04
public class AvatarMananger { private String AVATAR_PATH = Environment.getExternalStorageDirectory().getPath() + File.separator + "xd"; public static final int AVATER_PIC = 1001; public static final int AVATER_ALBUM = 1002; public static final int AVATER_CROPE = 1003; private static AvatarMananger instance; private static Activity act; public static Uri lastUri; private AvatarMananger() { deleterFile(); newDirectory(); } private void newDirectory() { File file = new File(AVATAR_PATH); if (!file.exists()) { file.mkdir(); } } public static AvatarMananger newInstance(Activity activity) { act = activity; if (null == instance) instance = new AvatarMananger(); return instance; } /** * 打开图库 */ public void openAlbum() { Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); act.startActivityForResult(intent, AVATER_ALBUM); } /** * 拍照 */ public void takePic() { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); lastUri = Uri.fromFile(new File(AVATAR_PATH + "/" + System.currentTimeMillis() + ".jpg")); intent.putExtra(MediaStore.EXTRA_OUTPUT, lastUri); act.startActivityForResult(intent, AVATER_PIC); } /** * 裁剪 */ public void cropePic(Uri uri, int outputX, int outputY) { Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, "image/*"); intent.putExtra("crop", "true"); intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); intent.putExtra("outputX", outputX); intent.putExtra("outputY", outputY); intent.putExtra("scale", true);//黑边 intent.putExtra("scaleUpIfNeeded", true);//黑边 intent.putExtra("return-data", false); lastUri = Uri.fromFile(new File(AVATAR_PATH + "/" + System.currentTimeMillis() + ".jpg")); intent.putExtra(MediaStore.EXTRA_OUTPUT, lastUri); intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString()); intent.putExtra("noFaceDetection", true); // no face detection act.startActivityForResult(intent, AVATER_CROPE); } private void deleterFile() { FileUtils.deleteDir(AVATAR_PATH); } public static Uri getLastUri() { return lastUri; }
包含相册,拍照,裁剪等功能,回调在使用Activity的onActivityResult中。
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) switch (requestCode) { case AvatarMananger.AVATER_ALBUM:// ivShow.setImageURI(data.getData()); AvatarMananger.newInstance(TestActivity.this).cropePic(data.getData(), 200, 200); break; case AvatarMananger.AVATER_PIC:// ivShow.setImageURI(AvatarMananger.newInstance(TestActivity.this).getLastUri()); AvatarMananger.newInstance(TestActivity.this).cropePic(AvatarMananger.newInstance(TestActivity.this).getLastUri(), 200, 200); break; case AvatarMananger.AVATER_CROPE: ivShow.setImageURI(AvatarMananger.newInstance(TestActivity.this).getLastUri()); break; } }
更多相关文章
- Android之使用摄像头拍照
- 【翻译】(14)Stable APIs
- 四十七、实现调用Android手机的拍照功能
- android 更新ADT之后 报java.lang.NoClassDefFound
- 解决Glide4.0和圆角裁剪CenterCrop冲突
- Android(安卓)相机或者相册上传头像
- Android(安卓)WebView文件上传(关键代码)
- android 调用摄像头
- Android调用系统相机拍照并保存到指定位置