最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

接下來(lái)主要來(lái)講解一下代碼:

1. 彈框選擇相冊(cè)或拍照

比較簡(jiǎn)單的方式就是直接使用AlertDialog彈出選項(xiàng)供用戶(hù)進(jìn)行選擇

public static void showImagePickDialog(final Activity activity){

 String title = "選擇獲取圖片方式";
 String[] items = new String[]{"拍照","相冊(cè)"};

 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:
       //選擇相冊(cè)
       pickImageFromAlbum(activity);
       break;
       default:
       break;
      }
     }
    }).show();
 }

2. 調(diào)用系統(tǒng)相機(jī)

在調(diào)用系統(tǒng)相機(jī)前,我們需要傳入自定義路徑的圖片Uri,指定拍照的圖片存放在這個(gè)Uri下,如果直接在返回時(shí)使用getData()獲取的是壓縮過(guò)的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. 打開(kāi)系統(tǒng)相冊(cè)

直接調(diào)用系統(tǒng)相冊(cè),再對(duì)返回?cái)?shù)據(jù)進(jìn)行操作

public static void pickImageFromAlbum(final Activity activity){

  //隱式調(diào)用,可能出現(xiàn)多種選擇
  Intent intent = new Intent();
  intent.setAction(Intent.ACTION_GET_CONTENT);
  intent.setType("image/*");
  activity.startActivityForResult(intent,REQUEST_CODE_FROM_ALBUM);
}

4. 對(duì)返回圖片Uri進(jìn)行裁剪工作

對(duì)于拍照返回,直接對(duì)返回圖片進(jìn)行裁剪即可;而對(duì)于選擇相冊(cè)返回,我們需要先將原圖片復(fù)制到我們自定義的目錄下(避免裁剪操作對(duì)原圖片的質(zhì)量產(chǎn)生影響),然后對(duì)復(fù)制的圖片進(jìn)行裁剪

@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); //復(fù)制圖片
    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;
  }
 }

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家學(xué)習(xí)Android軟件編程有所幫助。

相關(guān)文章

  • Android Bitmap詳細(xì)介紹

    Android Bitmap詳細(xì)介紹

    Android中Bitmap的常見(jiàn)操作整理一覽,需要的朋友可以參考下
    2012-12-12
  • Android中FloatingActionButton實(shí)現(xiàn)懸浮按鈕實(shí)例

    Android中FloatingActionButton實(shí)現(xiàn)懸浮按鈕實(shí)例

    這篇文章主要介紹了Android中FloatingActionButton實(shí)現(xiàn)懸浮按鈕實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-04-04
  • android 瀏覽器之多窗口方案詳解

    android 瀏覽器之多窗口方案詳解

    android 瀏覽器之多窗口方案詳細(xì)介紹,需要的朋友可以過(guò)來(lái)參考下
    2013-07-07
  • Android不壓縮圖片實(shí)現(xiàn)高清加載巨圖實(shí)例

    Android不壓縮圖片實(shí)現(xiàn)高清加載巨圖實(shí)例

    這篇文章主要為大家介紹了Android不壓縮圖片實(shí)現(xiàn)高清加載巨圖實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Android 5.0最應(yīng)該實(shí)現(xiàn)的8個(gè)期望

    Android 5.0最應(yīng)該實(shí)現(xiàn)的8個(gè)期望

    毫無(wú)疑問(wèn),Android 5 將是令人興奮的操作系統(tǒng),因?yàn)?Android4.0 至 4.4 版本之間并沒(méi)有顯著的差異,顯然谷歌會(huì)在 5.0 版本中進(jìn)行一些較大幅度的革新
    2016-01-01
  • Android?debug包運(yùn)行正常release包崩潰的解決辦法

    Android?debug包運(yùn)行正常release包崩潰的解決辦法

    這篇文章主要介紹了Android?debug包運(yùn)行正常,release包崩潰解決辦法,文中通過(guò)代碼示例介紹的非常詳細(xì),對(duì)大家解決問(wèn)題有一定的幫助,需要的朋友可以參考下
    2024-04-04
  • Android Java調(diào)用自己C++類(lèi)庫(kù)的實(shí)例講解

    Android Java調(diào)用自己C++類(lèi)庫(kù)的實(shí)例講解

    今天小編就為大家分享一篇關(guān)于Android Java調(diào)用自己C++類(lèi)庫(kù)的實(shí)例講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-02-02
  • GreenDao 3.2.0 的基本使用

    GreenDao 3.2.0 的基本使用

    本文主要對(duì)GreenDao 3.2.0 的基本使用進(jìn)行詳細(xì)介紹。具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-01-01
  • Android編程之OpenGL繪圖技巧總結(jié)

    Android編程之OpenGL繪圖技巧總結(jié)

    這篇文章主要介紹了Android編程之OpenGL繪圖技巧,結(jié)合實(shí)例形式總結(jié)分析了Android基于OpenGL繪圖的原理與具體步驟,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-11-11
  • Android四大組件之廣播BroadcastReceiver詳解

    Android四大組件之廣播BroadcastReceiver詳解

    Android開(kāi)發(fā)的四大組件分別是:活動(dòng)(activity),用于表現(xiàn)功能;服務(wù)(service),后臺(tái)運(yùn)行服務(wù),不提供界面呈現(xiàn);廣播接受者(Broadcast Receive),勇于接收廣播;內(nèi)容提供者(Content Provider),支持多個(gè)應(yīng)用中存儲(chǔ)和讀取數(shù)據(jù),相當(dāng)于數(shù)據(jù)庫(kù),本篇著重介紹廣播組件
    2021-11-11

最新評(píng)論

通州市| 峡江县| 甘德县| 郁南县| 荃湾区| 枞阳县| 福建省| 南木林县| 阿鲁科尔沁旗| 南康市| 嘉鱼县| 岱山县| 潜山县| 丹阳市| 资阳市| 尉犁县| 竹溪县| 沙洋县| 静宁县| 兴安县| 石嘴山市| 厦门市| 扎赉特旗| 景宁| 贞丰县| 湖口县| 互助| 颍上县| 姜堰市| 青龙| 青浦区| 景德镇市| 奉化市| 彭山县| 奉节县| 满洲里市| 新田县| 开阳县| 夏邑县| 晋江市| 保靖县|