我們在開發項目的時候,都需要設計用戶頭像,其實要實現這個功能要浪費不少的時間,下面就讓武林技術頻道小編帶大家學習Android實現用戶頭像更換操作吧!
你以為頭像更換很容易?或許對于用戶來講,在微信上更換一個頭像只是點擊頭像,選擇拍照或相冊,裁剪返回而已。但是對于程序員來說,要實現其實也挺吃力的(小火柴花了一個下午整理~_~)。
正如用戶使用那樣,代碼的實現也是按照操作的順序而逐步展開。如下圖:

接下來主要來講解一下代碼:
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進行裁剪工作
對于拍照返回,直接對返回圖片進行裁剪即可;而對于選擇相冊返回,我們需要先將原圖片復制到我們自定義的目錄下(避免裁剪操作對原圖片的質量產生影響),然后對復制的圖片進行裁剪
@Overrideprotected 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; } }以上就是武林技術頻道小編對大家介紹的Android實現用戶頭像更換操作,我們可以根據自己的實際情況進行選擇,希望能幫助到大家。
|
新聞熱點
疑難解答