/IMAlbum

一个完整的支持单选多选图片、截图功能、可扩展业务的图片滑动预览图库

Primary LanguageJava

###文章讲解地址 android微信图片选择器 android微信图片浏览框架设计

IMAlbum

一个完整的支持单选多选图片、截图功能、可扩展业务的图片滑动预览图库

使用参数参考com.opensource.configure.IntentUtils

/**

  • 界面跳转类

  • @description:

  • @author zhangjianlin (990996641)

  • @date 2015年4月28日 上午10:52:07 */ public class IntentUtils {

    public static final int REQUEST_IMAGE = 10000; public static final int REQUEST_CROPIMAGE = 10001;

    public static void jumpToSelectPics(Activity mContext, boolean isShowCamera, int selectMaxCount, int selectMode, String submitBtnStr, boolean isJumpToCheckPics, ArrayList hasSelectList) { Intent intent = new Intent(mContext, MultiImageSelectorActivity.class);

     // whether show camera
     intent.putExtra(MultiImageSelectorActivity.EXTRA_SHOW_CAMERA, isShowCamera);
    
     // String of submit button
     intent.putExtra(MultiImageSelectorActivity.EXTRA_SUBMIT_TITLE, submitBtnStr);
    
     // String of submit button
     intent.putExtra(MultiImageSelectorFragment.EXTRA_JUMPTOCHECKPICS, isJumpToCheckPics);
    
     // max select image amount
     intent.putExtra(MultiImageSelectorActivity.EXTRA_SELECT_COUNT, selectMaxCount);
    
     // select mode (MultiImageSelectorActivity.MODE_SINGLE OR MultiImageSelectorActivity.MODE_MULTI)
     intent.putExtra(MultiImageSelectorActivity.EXTRA_SELECT_MODE, selectMode);
    
     // EXTRA_DEFAULT_SELECTED_LIST
    
     if (hasSelectList != null) {
     	intent.putStringArrayListExtra(MultiImageSelectorActivity.EXTRA_DEFAULT_SELECTED_LIST, hasSelectList);
     }
     //
     mContext.startActivityForResult(intent, REQUEST_IMAGE);
    

    }

    /**

    • @param isShowCamera是否可拍照
    • @param selectMaxCount selectMode=MultiImageSelectorActivity.MODE_MULTI,selectMaxCount表示选择的照片最大数
    •    selectMode=MultiImageSelectorActivity.MODE_SINGLE,selectMaxCount=1表示选择后的图片要剪切,否则返回选择的图片路径
      
    • @param selectMode MultiImageSelectorActivity.MODE_SINGLE OR MultiImageSelectorActivity.MODE_MULTI
    • @param isScaleImg 在单选模式下是否截图
    • @description:
    • @date 2015年4月28日 上午10:50:16 */

    public static void jumpToSelectPics(Activity mContext, boolean isShowCamera, int selectMaxCount, int selectMode) { Intent intent = new Intent(mContext, MultiImageSelectorActivity.class);

     // whether show camera
     intent.putExtra(MultiImageSelectorActivity.EXTRA_SHOW_CAMERA, isShowCamera);
    
     // max select image amount
     intent.putExtra(MultiImageSelectorActivity.EXTRA_SELECT_COUNT, selectMaxCount);
    
     // select mode (MultiImageSelectorActivity.MODE_SINGLE OR MultiImageSelectorActivity.MODE_MULTI)
     intent.putExtra(MultiImageSelectorActivity.EXTRA_SELECT_MODE, selectMode);
     //
     mContext.startActivityForResult(intent, REQUEST_IMAGE);
    

    }

    /**

    • @param isShowCamera是否可拍照
    • @param selectMaxCount selectMode=MultiImageSelectorActivity.MODE_MULTI,selectMaxCount表示选择的照片最大数
    •    selectMode=MultiImageSelectorActivity.MODE_SINGLE,selectMaxCount=1表示选择后的图片要剪切,否则返回选择的图片路径
      
    • @param selectMode MultiImageSelectorActivity.MODE_SINGLE OR MultiImageSelectorActivity.MODE_MULTI
    • @param isScaleImg 在单选模式下是否截图
    • @param hasSelectList 空间发表动态时候,已经选择的图片
    • @description:
    • @date 2015年4月28日 上午10:50:16 */

    public static void jumpToSelectPics(Activity mContext, boolean isShowCamera, int selectMaxCount, int selectMode, ArrayList hasSelectList) { Intent intent = new Intent(mContext, MultiImageSelectorActivity.class);

     // whether show camera
     intent.putExtra(MultiImageSelectorActivity.EXTRA_SHOW_CAMERA, isShowCamera);
    
     // max select image amount
     intent.putExtra(MultiImageSelectorActivity.EXTRA_SELECT_COUNT, selectMaxCount);
    
     // select mode (MultiImageSelectorActivity.MODE_SINGLE OR MultiImageSelectorActivity.MODE_MULTI)
     intent.putExtra(MultiImageSelectorActivity.EXTRA_SELECT_MODE, selectMode);
     // EXTRA_DEFAULT_SELECTED_LIST
     intent.putStringArrayListExtra(MultiImageSelectorActivity.EXTRA_DEFAULT_SELECTED_LIST, hasSelectList);
     mContext.startActivityForResult(intent, REQUEST_IMAGE);
    

    }

    /**

    @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode == REQUEST_IMAGE){ if(resultCode == RESULT_OK){ // Get the result list of select image paths List path = data.getStringArrayListExtra(MultiImageSelectorActivity.EXTRA_RESULT); // do your logic .... } } } */

    /**

    • @param mPhotoCheck选中的图片,填空或null表示从第一个开始
    • @param mImageList 要预览的图片list
    • @description:
    • @author zhangjianlin (990996641)
    • @param
    • @date 2015年5月5日 下午12:03:59 */

    public static void jumpToPreViewImage(Activity mContext, ArrayList mImageList, String mPhotoCheck) { Intent intent = new Intent(mContext, ImageDetailAct.class); intent.putExtra("imageListBean", mImageList); intent.putExtra("imageDetailCheck", mPhotoCheck); mContext.startActivity(intent); }

    /**

    • @param imageDetailCheckPositon选中的图片, 默认位置
    • @param mImageList 要预览的图片list
    • @description:
    • @author zhangjianlin (990996641)
    • @param
    • @date 2015年5月5日 下午12:03:59 */

    public static void jumpToPreViewImage(Activity mContext, ArrayList mImageList, int imageDetailCheckPositon) { Intent intent = new Intent(mContext, ImageDetailAct.class); intent.putExtra("imageListBean", mImageList); intent.putExtra("imageDetailCheckPositon", imageDetailCheckPositon); mContext.startActivity(intent); }

    /**

    • 图片格式jpeg
    • @param picResultPath 图片的要保存的地址
    • @param scaleW 截图区域的宽度 单位 dp
    • @param scaleH 截图区域的高度 单位 dp
    • @param limtWidth 裁剪出来的图的宽度
    • @param limitHight 裁剪出来的图的高度
    • @param isScaleImg 是否按照 limtWidth、limitHight的比例进行放大缩小
    • @description:
    • @author zhangjianlin (990996641)
    • @date 2015年6月11日 下午4:25:00 */

    public static void jumpToSelecAndCropImg(Activity mContext, String picResultPath, int scaleW, int scaleH, int limtWidth, int limitHight, boolean isScaleImg) { Intent intent = new Intent(mContext, MultiImageSelectorActivity.class);

     // whether show camera
     intent.putExtra(MultiImageSelectorActivity.EXTRA_SHOW_CAMERA, false);
    
     // max select image amount
     intent.putExtra(MultiImageSelectorActivity.EXTRA_SELECT_COUNT, 1);
     // select mode (MultiImageSelectorActivity.MODE_SINGLE OR MultiImageSelectorActivity.MODE_MULTI)
     intent.putExtra(MultiImageSelectorActivity.EXTRA_SELECT_MODE, MultiImageSelectorActivity.MODE_SINGLE);
     // intent.putExtra(MultiImageSelectorActivity.EXTRA_DEFAULT_CROP_CAMERA, isScaleImg);
    
     intent.putExtra(CropImageAct.RESIZEBIT, isScaleImg);
     intent.putExtra(CropImageAct.RESULT, picResultPath);
     intent.putExtra(CropImageAct.SCALEW, scaleW);
     intent.putExtra(CropImageAct.SCALEH, scaleH);
     intent.putExtra(CropImageAct.LIMITW, limtWidth);
     intent.putExtra(CropImageAct.LIMITH, limitHight);
    
     mContext.startActivityForResult(intent, REQUEST_CROPIMAGE);
    

    }

    /**

    • 图片格式jpeg
    • @param orgUri 图片的原始uri 的string
    • @param savePath 图片的要保存的地址
    • @param scaleW 截图区域的宽度 单位 dp
    • @param scaleH 截图区域的高度 单位 dp
    • @param limtWidth 裁剪出来的图的宽度
    • @param limitHight 裁剪出来的图的高度
    • @param isEableMatrix 是否按照 limtWidth、limitHight的比例进行放大缩小
    • @description: */

    public static void jumpToCropImage(Activity mContext, String orgUri, String savePath, int scaleW, int scaleH, int limtWidth, int limitHight, boolean isEableMatrix) { Intent intent = new Intent(mContext, CropImageAct.class); intent.putExtra(CropImageAct.PHOTOURI, orgUri); intent.putExtra(CropImageAct.RESULT, savePath); intent.putExtra(CropImageAct.SCALEH, scaleH); intent.putExtra(CropImageAct.SCALEW, scaleW); intent.putExtra(CropImageAct.LIMITW, limtWidth); intent.putExtra(CropImageAct.LIMITH, limitHight); intent.putExtra(CropImageAct.RESIZEBIT, isEableMatrix); mContext.startActivityForResult(intent, REQUEST_CROPIMAGE); }

    /**

    • @Description:选择单张图片不剪切
    • 返回值 ArrayList switch (requestCode) { case IntentUtils.REQUEST_IMAGE: if (data != null) { ArrayList resultList = data .getStringArrayListExtra(MultiImageSelectorActivity.EXTRA_RESULT); } break; }
    • @param mContext */ public static void jumpToSelectNoCropImg(Activity mContext) { jumpToSelectPics(mContext, false, 2, MultiImageSelectorActivity.MODE_SINGLE); }

    public static void jumpToPreViewImageChecked(Activity mContext, ArrayList mImageList, int imageDetailCheckPositon, ArrayList hasSelectList, int maxSelectCount, String submitStr) { Intent intent = new Intent(mContext, ImageDetailCheckPicsAct.class); // intent.putExtra("imageListBean", mImageList); ImageDetailCheckPicsAct.putValue("imageListBean", mImageList); intent.putExtra("imageDetailCheckPositon", imageDetailCheckPositon); intent.putExtra(ImageDetailCheckPicsAct.EXTRA_CHECKEDPICS, hasSelectList); intent.putExtra(MultiImageSelectorActivity.EXTRA_SELECT_COUNT, maxSelectCount); intent.putExtra(MultiImageSelectorActivity.EXTRA_SUBMIT_TITLE, submitStr); mContext.startActivityForResult(intent, ImageDetailCheckPicsAct.REQUEST_CHECKFILE); } }