Android中多圖片選擇器ImagePicker庫的使用(仿微信、非常容易整合)
原文地址: https://github.com/jeasonlzy/ImagePicker
ImagePicker
Android自定義相簿,完全仿微信UI,實現了拍照、圖片選擇(單選/多選)、 裁剪 、旋轉、等功能。
由於個人時間有限,該專案停止維護
如果你發現有bug,或者好的建議,可以提merge request,我測試通過後會立即合併併發布新版本,確保該庫處於可用的狀態。
該專案參考了:
喜歡原作的可以去使用。同時歡迎大家下載體驗本專案,如果使用過程中遇到什麼問題,歡迎反饋。
聯絡方式
演示
1.用法
使用前,對於Android Studio的使用者,可以選擇新增:
compile 'com.lzy.widget:imagepicker:0.6.1' //指定版本
2.功能和引數含義
溫馨提示:目前庫中的預覽介面有個原圖的複選框,暫時只做了UI,還沒有做壓縮的邏輯
配置引數 | 引數含義 |
---|---|
multiMode | 圖片選著模式,單選/多選 |
selectLimit | 多選限制數量,預設為9 |
showCamera | 選擇照片時是否顯示拍照按鈕 |
crop | 是否允許裁剪(單選有效) |
style | 有裁剪時,裁剪框是矩形還是圓形 |
focusWidth | 矩形裁剪框寬度(圓形自動取寬高最小值) |
focusHeight | 矩形裁剪框高度(圓形自動取寬高最小值) |
outPutX | 裁剪後需要儲存的圖片寬度 |
outPutY | 裁剪後需要儲存的圖片高度 |
isSaveRectangle | 裁剪後的圖片是按矩形區域儲存還是裁剪框的形狀,例如圓形裁剪的時候,該引數給true,那麼儲存的圖片是矩形區域,如果該引數給fale,儲存的圖片是圓形區域 |
imageLoader | 需要使用的圖片載入器,自需要實現ImageLoader介面即可 |
3.程式碼參考
更多使用,請下載demo參看原始碼
- 首先你需要繼承
com.lzy.imagepicker.loader.ImageLoader
這個介面,實現其中的方法,比如以下程式碼是使用Picasso
三方載入庫實現的
public class PicassoImageLoaderimplements ImageLoader { @Override public void displayImage(Activity activity, String path, ImageView imageView, int width, int height) { Picasso.with(activity)// .load(Uri.fromFile(new File(path)))// .placeholder(R.mipmap.default_image)// .error(R.mipmap.default_image)// .resize(width, height)// .centerInside()// .memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE)// .into(imageView); } @Override public void clearMemoryCache() { //這裡是清除快取的方法,根據需要自己實現 } }
- 然後配置圖片選擇器,一般在Application初始化配置一次就可以,這裡就需要將上面的圖片載入器設定進來,其餘的配置根據需要設定
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_image_picker); ImagePicker imagePicker = ImagePicker.getInstance(); imagePicker.setImageLoader(new PicassoImageLoader()); //設定圖片載入器 imagePicker.setShowCamera(true); //顯示拍照按鈕 imagePicker.setCrop(true); //允許裁剪(單選才有效) imagePicker.setSaveRectangle(true); //是否按矩形區域儲存 imagePicker.setSelectLimit(9); //選中數量限制 imagePicker.setStyle(CropImageView.Style.RECTANGLE); //裁剪框的形狀 imagePicker.setFocusWidth(800); //裁剪框的寬度。單位畫素(圓形自動取寬高最小值) imagePicker.setFocusHeight(800); //裁剪框的高度。單位畫素(圓形自動取寬高最小值) imagePicker.setOutPutX(1000);//儲存檔案的寬度。單位畫素 imagePicker.setOutPutY(1000);//儲存檔案的高度。單位畫素 }
- 以上配置完成後,在適當的方法中開啟相簿,例如點選按鈕時
public void onClick(View v) { Intent intent = new Intent(this, ImageGridActivity.class); startActivityForResult(intent, IMAGE_PICKER); } }
- 如果你想直接呼叫相機
Intent intent = new Intent(this, ImageGridActivity.class); intent.putExtra(ImageGridActivity.EXTRAS_TAKE_PICKERS,true); // 是否是直接開啟相機 startActivityForResult(intent, REQUEST_CODE_SELECT);
- 重寫
onActivityResult
方法,回撥結果
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == ImagePicker.RESULT_CODE_ITEMS) { if (data != null && requestCode == IMAGE_PICKER) { ArrayList<ImageItem> images = (ArrayList<ImageItem>) data.getSerializableExtra(ImagePicker.EXTRA_RESULT_ITEMS); MyAdapter adapter = new MyAdapter(images); gridView.setAdapter(adapter); } else { Toast.makeText(this, "沒有資料", Toast.LENGTH_SHORT).show(); } } }
更新日誌
V 0.6.1
V 0.6.0
V 0.5.5
- [修復]選擇圖頁面進入預覽取消選擇或者選擇後返回列表不更新的問題;
- [修復]6.0動態許可權可能導致崩潰的bug;
V 0.5.4
- [修復]部分記憶體洩漏問題;
- [修復]新增顯示已選中圖片的呼叫方法:詳情請檢視demo首頁的ImagePickerActivity;如果不需要此功能,則WxDemoActivity可能是你想要的。
V 0.5.3
- [修復]矯正圖片旋轉導致的oom;
- [修復]部分手機TitleBar和狀態列重複的問題;
V 0.5.1
- [更正] 由於原圖功能其實還沒有做,所以本版本隱去了原圖的顯示。以免使用者誤解原圖問題。
- [修復] 使用RecyclerView替換GridView解決改變選中狀態全域性重新整理的問題;
- [提示] 雖然本次解決了全域性重新整理,但是如果使用的是Picasso依然會出現重新載入一張圖片的問題,這是Picasso自己的問題,建議使用Glide框架。
V 0.5.0
- [修復] 解決provider衝突問題;
V 0.4.8
- [修復] 解決demo中直接呼起相機並裁剪不會返回資料的bug,不需要這個功能的可以不更新;
V 0.4.7
- [新增] 新增可直接調起相機的功能;
- [修復] 解決可能和主專案provider衝突的潛在問題;
- [修復] 點選圖片預覽空指標崩潰問題;
- [修復] 使用Intent傳值限制導致的崩潰問題;
- [修復] 部分機型拍照後圖片旋轉問題;
- [修復] 更改選擇框圖片背景為灰色,以免白色圖看不清。
V 0.3.5
- [新增] 提供直接調起相機的方式,並可直接設定牌照是否裁剪;
- [修復] Android7.0裝置調系統相機直接崩潰的問題;
- [注意] 如果出現 java.lang.RuntimeException: Unable to get provider android.support.v4.content.FileProvider: java.lang.SecurityException: Provider must not be exported,請直接clean再執行即可。
更多使用,請下載demo參看原始碼
相關推薦
Android中多圖片選擇器ImagePicker庫的使用(仿微信、非常容易整合)
原文地址: https://github.com/jeasonlzy/ImagePickerImagePickerAndroid自定義相簿,完全仿微信UI,實現了拍照、圖片選擇(單選/多選)、 裁剪 、旋轉、等功能。由於個人時間有限,該專案停止維護如果你發現有bug,或者好的
Android中多圖片選擇器PhotoPicker庫的使用(仿微信,秒殺MultiImageSelector)
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); i
Android 關於多圖片選擇器Android-Ultra-Photo-Selector的使用(附原始碼)
最近在網上看各種開源框架的使用,而且近期自己開發的工程需要使用到多圖片選擇,於是使用了Android-Ultra-Photo-Selector這款框架(ps:這個工程是一個外部lib包,所以需要將你自己的工程引用),感興趣的可以直接去下載或者下載我的資源(文章最好會有原始碼
android中6個EditText輸入驗證碼(仿支付寶支付輸入密碼框)
/** * * @author lm * */ public class IdentifyActivity extends Activity { private EditText mEditTextOne, mEditTextTwo, mEditTextThree, mEditTextFou
Android二維碼(仿微信,輕量Zxing)
前言 要做一個功能,二維碼識別。網上找一堆相關的Demo,但是總不是想要的效果,或者都是多年前的版本,權衡考慮之後,決定親自操刀。不糾結直接選中Zxing框架,https://github.com/zxing/zxing 在網站上直接clone下來,執行,然後
同一個app不同activity顯示多工(仿微信小程式切換效果)
簡書地址:https://www.jianshu.com/p/a8f695841008 轉載請註明出處 如題,這種效果類似微信小程式顯示的效果,就是開啟微信跳一跳後,切換安卓多工視窗(就是清理記憶體視窗),會看到如下頁面 微信小程式會在其中顯示兩個單獨
Android實現二維碼掃描(仿微信,輕量Zxing)
前言 要做一個功能,二維碼識別。網上找一堆相關的Demo,但是總不是想要的效果,或者都是多年前的版本,權衡考慮之後,決定親自操刀。不糾結直接選中Zxing框架,https://github.com/zxing/zxing 在網站上直接clone下來,執行,然後就發現問題了.
CSS中多個選擇器之間有無空格的區別
#content.div {color:#f00;} #content .div {color:#f00;}第一行:表示ID是content並且同時類名是div的選擇器,此時才能生效第二行:表示ID是content下子節點元素中含有類名為div的選擇器,此時才能生效
android中RadioButton的選擇器
今天碰到一個RadioGroup和RadioButton的選擇器問題。具體情境如下: 兩個RadioButton來回選擇,背景和文字相應跟著變換。選擇RadioButton1時候,1的背景變成白色,文字變成紅色;2的背景變成紅色,文字變成白色。選擇RadioButton2時
iOS中新增圖片選擇器的實現
//為imageview新增點選事件的方法,搜尋tap gesture 為圖片新增,並在右側選擇interfaceenable,後為左側的tap gesture拖入事件 //下方法為點選圖片後從相簿插
jq中多條件選擇器,相對選擇器,層次選擇器的區別
一、Jquery常用的過濾選擇器如下所示: 1、:first,選取第一個元素,比如$("div:first")選取第一個div元素 2、:last,選取最後一個元素,比如$("div:last")選取最後一個div元素 3、:not(選擇器)
Android 平板中 自定義鍵盤(popuwindow) 居於螢幕左下方 仿微信的密碼輸入介面
之前部落格中,介紹過使用谷歌提供的鍵盤的一些api,可以很好地自定義鍵盤,參考我之前的部落格連結:android 自定義鍵盤 ,這個有一個侷限性,只能佔滿螢幕,無法做到只能佔一部分的需求鍵盤,如下圖我平板中的鍵盤需求:(由於公司保密需要,所以比較恐怖一點,嘿嘿)
Android 修改源碼自定義SwipeRefreshLayout樣式——高仿微信朋友圈下拉刷新
樣式 post and 微信 修改 size roi 自定義 details 修改源碼自定義SwipeRefreshLayout樣式——高仿微信朋友圈下拉刷新Android 修改源碼自定義SwipeRefreshLayout樣式——高仿微信朋友圈下拉
android仿微信、QQ等聊天介面,實現點選輸入框彈出軟鍵盤、點選其他區域收起軟鍵盤,預設滑動至最低端
如圖所示,點選輸入框及選擇圖片和傳送按鈕時軟鍵盤顯示且不消失,點選其他區域,則隱藏軟鍵盤。 主要程式碼如下: override fun dispatchTouchEvent(ev: MotionEvent?): Boolean { if (ev!!.getAction() ==
Android Zxing實現掃描二維碼條形碼功能仿微信整合閃光燈生成二維碼
最近在做android專案需要用到二維碼條形碼掃描功能,我用的是Eclipse網上原始碼大多是GitHup上的Android studio版本的所以我改了一版整合到專案中去。 效果圖: 左邊版本的掃碼框是自定義的。右邊版本的掃碼框和掃描線是圖片因為太醜所以最終換成左邊
Android 使用RecyclerView實現(仿微信)的聯絡人A-Z字母排序和過濾搜尋功能
之前做專案的時候遇到一個需求是實現品牌的字母排序功能,網上的資料很多,但是有一部分有bug,這篇文章是我學習和解決部分bug之後的總結。今天帶來的是RecyclerView的A-Z字母排序和過濾搜尋功能。 首先上效果圖: 重點:1、實現資料排序分類 2、
Android 實現自定義安全數字鍵盤(仿微信)
背景 大部分的金融App會對預設的數字鍵盤進行處理,以實現自定義的數字安全鍵盤。基於此,本文對對微信數字鍵盤樣式進行了仿寫,實現了一套自定義的數字安全鍵盤(支援隨機數字分佈)。 一.圖示效果 二.需要考慮的問題 佈局的實現方式; demo中使用了popupw
推薦手機H5應用快速開發 UI庫(Framework7、SUI(淘寶)、MUI、WeUI(微信)、GMU(百度)、Frozen UI(QQ))
推薦手機H5應用快速開發 UI庫 Framework7(阿里巴巴)、SUI(淘寶)、MUI( dcloud-HBuilder)、WeUI(微信)、Frozen UI(騰訊手機QQ)、GMU(百度)、Amaze UI(雲適配) 等… Framework
android 仿微信、支付寶支付密碼框效果
GitHub:https://github.com/Jungerr/GridPasswordView 新增依賴: compile 'com.jungly:gridPasswordView:
Android仿微信、錄製音訊併發送功能
1.首先是主頁面的佈局 佈局採用線性佈局,上面使用的一個ListView,下面使用的是一個自定義的Button(會在下面進行介紹) <LinearLayout xmlns:android="http://schemas.android.com/apk/re