国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android實現用戶頭像更換操作

2019-12-12 06:27:51
字體:
來源:轉載
供稿:網友

你以為頭像更換很容易?或許對于用戶來講,在微信上更換一個頭像只是點擊頭像,選擇拍照或相冊,裁剪返回而已。但是對于程序員來說,要實現其實也挺吃力的(小火柴花了一個下午整理~_~)。

正如用戶使用那樣,代碼的實現也是按照操作的順序而逐步展開。如下圖:

接下來主要來講解一下代碼:

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;  } }

以上只給了部分代碼,需要完整代碼的同學可以到GitHub上下載:
https://github.com/ZhouCP/PhotoDemo

以上就是本文的全部內容,希望對大家學習Android軟件編程有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阳高县| 湖州市| 小金县| 县级市| 株洲市| 巴彦县| 唐河县| 留坝县| 洮南市| 额尔古纳市| 宝丰县| 遵化市| 克什克腾旗| 海晏县| 天峻县| 上林县| 荔波县| 永仁县| 大邑县| 双江| 郧西县| 苏尼特右旗| 鄂托克前旗| 吕梁市| 牙克石市| 诸城市| 郁南县| 乐平市| 余庆县| 吐鲁番市| 梓潼县| 莫力| 奈曼旗| 康定县| 锡林浩特市| 天水市| 金山区| 许昌市| 当阳市| 阿拉善盟| 巴彦淖尔市|