欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android實現(xiàn)用戶頭像更換操作

 更新時間:2016年04月29日 14:40:09   作者:IT小火柴  
這篇文章主要介紹了Android實現(xiàn)用戶頭像更換操作的相關資料,更改頭像用戶操作很簡單,但是對于程序員實際操作有些復雜,需要了解的朋友可以參考下

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

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

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

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. 調用系統(tǒng)相機

在調用系統(tǒng)相機前,我們需要傳入自定義路徑的圖片Uri,指定拍照的圖片存放在這個Uri下,如果直接在返回時使用getData()獲取的是壓縮過的Bitmap數(shù)據(jù)

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. 打開系統(tǒng)相冊

直接調用系統(tǒng)相冊,再對返回數(shù)據(jù)進行操作

public static void pickImageFromAlbum(final Activity activity){

  //隱式調用,可能出現(xiàn)多種選擇
  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

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

相關文章

  • 詳解Flutter 調用 Android Native 的方法

    詳解Flutter 調用 Android Native 的方法

    這篇文章主要介紹了詳解Flutter 調用 Android Native 的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • Flutter框架解決盒約束widget和assets里加載資產技術

    Flutter框架解決盒約束widget和assets里加載資產技術

    這篇文章主要為大家介紹了Flutter框架解決盒約束widget和assets里加載資產技術運用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • Input系統(tǒng)之InputReader處理合成事件詳解

    Input系統(tǒng)之InputReader處理合成事件詳解

    這篇文章主要為大家介紹了Input系統(tǒng)之InputReader處理合成事件詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • 詳解Android JNI的基本使用(CMake)

    詳解Android JNI的基本使用(CMake)

    本文介紹了Android JNI的基本使用(CMake),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • 配置android開發(fā)環(huán)境時出現(xiàn)eclipse獲取不到ADT的解決方法

    配置android開發(fā)環(huán)境時出現(xiàn)eclipse獲取不到ADT的解決方法

    這篇文章主要介紹了配置android開發(fā)環(huán)境時出現(xiàn)eclipse獲取不到ADT的解決方法,涉及針對開發(fā)環(huán)境hosts文件域名映射的修改及eclipse配置的修改技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-12-12
  • FFmpeg?Principle學習new_video_stream添加視頻輸出流

    FFmpeg?Principle學習new_video_stream添加視頻輸出流

    這篇文章主要為大家介紹了FFmpeg?Principle學習new_video_stream添加視頻輸出流示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • Android中CountDownTimer倒計時器用法實例

    Android中CountDownTimer倒計時器用法實例

    這篇文章主要介紹了Android中CountDownTimer倒計時器用法,以實例形式分析了Android中CountDownTimer類的相關使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • 解決Android popupWindow設置背景透明度無效的問題

    解決Android popupWindow設置背景透明度無效的問題

    這篇文章主要介紹了解決Android popupWindow設置背景透明度無效的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Android recyclerview實現(xiàn)拖拽排序和側滑刪除

    Android recyclerview實現(xiàn)拖拽排序和側滑刪除

    這篇文章主要為大家詳細介紹了Android recyclerview實現(xiàn)拖拽排序和側滑刪除,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Android列表對話框用法實例分析

    Android列表對話框用法實例分析

    這篇文章主要介紹了Android列表對話框用法,實例分析了Android實現(xiàn)列表對話框的布局、設置及功能等相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09

最新評論