android裁剪圓型頭像

Louis_yexing發表於2016-07-06

用況:

有時候我們需要設定一個頭像,需要在一張拍照或者相簿中的圖片裡擷取一個區域另存為一張圖片,用做頭像顯示

提供一個demo

修改頭像

可選擇拍照或者選擇相簿圖片

這裡寫圖片描述

我這裡選擇了一張相簿裡的圖片,主要是跳轉到ClipActivity,選擇好裁剪的區域後,點選確認,呼叫ClipImageLayout的clip方法即可。

這裡寫圖片描述

我這裡會把裁剪完的圖片儲存到一個臨時檔案,然後根據路徑顯示出來,你們可以根據自己的需要用做上傳或者其他快取處理。

這裡寫圖片描述

其中

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN)
以防止不同手機的通知欄高度會影響判斷裁剪區域是否超出圖片範圍的準確性;

並且,裁剪介面是將選擇的圖片轉換為bitmap進行顯示的,如果資源過大,會導致記憶體溢位,所以還需要進行一步壓縮:

Bitmap bitmap=ImageTools.convertToBitmap(path, 600,600);
另:如若想改為裁剪方形頭像,則可將裁剪介面裁剪區域邊框改為正方形即可:

//方形邊框
//      canvas.drawRect(mHorizontalPadding, mVerticalPadding, getWidth()- mHorizontalPadding, getHeight() - mVerticalPadding, mPaint);
        //圓形邊框
        canvas.drawCircle( getWidth()/2, getHeight()/2, getWidth()/2-mHorizontalPadding, mPaint);

程式碼下載

相關文章