1. 程式人生 > >Android 超高仿微信圖片多選、單選,圖片剪下,圖片預覽,拍照等功能

Android 超高仿微信圖片多選、單選,圖片剪下,圖片預覽,拍照等功能

實現了微信圖片選擇的所有功能

  • 單選、多選
    • 單選,沒有預覽功能。
    • 多選,可以控制最大 選擇圖片數量
  • 拍照
    • 解決了三星拍照橫屏的bug
    • 關閉拍照後,第一個item將不顯示拍照選項
  • 預覽
    • 開啟預覽功能後,點選圖片或右下角預覽進入預覽介面。
    • 關閉後,點選圖片為選擇功能
    • 進入預覽介面後,依然可以,選擇或取消選擇
  • 剪下
    • 只有單選模式下,才能開啟剪下功能。
    • 預設只能剪下正方形,可自定義

實現效果:

微信相似度 95%

這裡寫圖片描述這裡寫圖片描述這裡寫圖片描述這裡寫圖片描述這裡寫圖片描述

程式碼結構

這裡寫圖片描述

快速開始

1) 新增以下依賴

dependencies {
    compile 'com.android.support:recyclerview-v7:22.2.1'
compile 'com.github.bumptech.glide:glide:3.6.1' compile 'com.commit451:PhotoView:1.2.4' compile 'com.isseiaoki:simplecropview:1.0.13' compile 'com.yongchun:com.yongchun.imageselector:1.1.0' }

2) 在 AndroidManifest.xml 新增許可權,並註冊相關Activity

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <activity android:name="com.yongchun.library.view.ImageSelectorActivity"/> <activity android:name="com.yongchun.library.view.ImagePreviewActivity"/> <activity android:name="com.yongchun.library.view.ImageCropActivity"
/>

3) 設定相關必要引數

ImageSelectorActivity.start(MainActivity.this, maxSelectNum, mode, isShow,isPreview,isCrop);

上面的程式碼等同於:

public static void start(Activity activity, int maxSelectNum, int mode, boolean isShow, boolean enablePreview, boolean enableCrop) {
    Intent intent = new Intent(activity, ImageSelectorActivity.class);
    intent.putExtra(EXTRA_MAX_SELECT_NUM, maxSelectNum);
    intent.putExtra(EXTRA_SELECT_MODE, mode);
    intent.putExtra(EXTRA_SHOW_CAMERA, isShow);
    intent.putExtra(EXTRA_ENABLE_PREVIEW, enablePreview);
    intent.putExtra(EXTRA_ENABLE_CROP, enableCrop);
    activity.startActivityForResult(intent, REQUEST_IMAGE);
}

4) 在 onActivityResult 回撥中接收選擇的圖片

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(resultCode == RESULT_OK && requestCode == ImageSelectorActivity.REQUEST_IMAGE){
        ArrayList<String> images = (ArrayList<String>) data.getSerializableExtra(ImageSelectorActivity.REQUEST_OUTPUT);
        // do something
    }
}

使用的第三方庫有:

Glide(快速載入圖片,不會卡頓,不會OOM)
PhotoView(雙擊放大圖片,旋轉圖片等功能)
simplecropview(自定義剪下比例,尺寸)

歡迎Star、Fork