• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

MXImagePicker: 基于Kotlin,AndroidX的仿微信图片选择器

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

MXImagePicker

开源软件地址:

https://gitee.com/zhangmengxiong/MXImagePicker

开源软件介绍:

ImagePicker

介绍

基于Kotlin,AndroidX的仿微信图片选择器库引用: 替换x.x.x 为最新版本

    implementation 'com.gitee.zhangmengxiong:MXImagePicker:x.x.x'

Image textImage text

使用方法

第一步:项目增加Androidx库和Glide图片加载库、图片缩放库

    implementation `androidx.appcompat:appcompat:x.x.x`    implementation "androidx.recyclerview:recyclerview:x.x.x"    implementation `com.github.bumptech.glide:glide:x.x.x`    implementation `androidx.constraintlayout:constraintlayout:2.0.4`    implementation 'com.github.chrisbanes:PhotoView:2.3.0'

第二步:使用前需要添加相册、存储权限

    Manifest.permission.CAMERA    Manifest.permission.READ_EXTERNAL_STORAGE    Manifest.permission.WRITE_EXTERNAL_STORAGE

注意:没有权限进入选择页面会报错!

第三步:启动选择页面

val intent = MXPickerBuilder().setMaxSize(3).createIntent(this)startActivityForResult(intent,0x22)
MXPickerBuilder参数说明
  1. setMaxSize(size: Int) 设置最大选择文件个数
  2. setType(type: PickerType) 设置类型
    • PickerType.Image = 图片
    • PickerType.Video = 视频
    • PickerType.ImageAndVideo = 图片 + 视频 混合选择
  3. setCameraEnable(enable: Boolean) 设置是否启动拍摄功能,默认=true
  4. setMaxVideoLength(length: Int) 当类型=Video时,可以选择视频最大时长限制,单位:秒 默认=-1 无限制
// 在图片选择器Activity创建时会回调这个方法,一般会通过这个来改变导航栏、状态栏的Theme,demo中搭配`ImmersionBar`来实现沉浸式效果ImagePickerService.registerActivityCallback { activity ->    ImmersionBar.with(activity)            .autoDarkModeEnable(true)            .statusBarColorInt(activity.resources.getColor(R.color.picker_color_background))            .fitsSystemWindows(true)            .navigationBarColor(R.color.picker_color_background)            .init()}
页面颜色设置

将下面颜色值放如主项目的资源xml中,可以修改页面对应的颜色显示

    <!--  页面背景色  -->    <color name="picker_color_background">#333333</color>       <!--  字体、icon颜色  -->     <color name="picker_color_important">#F1F1F1</color>    <!--  选中状态颜色  -->      <color name="picker_color_select">#03CE65</color>
多语言设置

将下面字符串定义放入对应的语言目录中,可以修改页面对应的文字提示

    <string name="picker_string_select">选择</string>    <string name="picker_string_all">全部</string>    <string name="picker_string_image_limit_tip">您最多只能选择 %s 张图片!</string>    <string name="picker_string_video_limit_tip">您最多只能选择 %s 个视频!</string>    <string name="picker_string_video_limit_length_tip">只能选择 %s 秒以内的视频</string>    <string name="picker_string_need_permission_storage_camera">需要写入存储、相机权限</string>    <string name="picker_string_need_permission_storage">需要读取存储权限</string>    <string name="picker_string_open_failed">打开失败!</string>

dimens.xml 资源

    <!--  顶部导航栏高度  -->      <dimen name="picker_bar_height">50dp</dimen>
自定义图片加载器(默认使用Glide)

通过继承实现接口IImageLoader ,并注册到服务ImagePickerService即可

// 数据对象data class Item(val path: String, val uri: Uri, val mimeType: String, val time: Long, val name: String, val type: PickerType)/** * 图片显示接口 */interface IImageLoader {    fun displayImage(item: Item, imageView: ImageView)}/** * 提供默认Glide显示图片 */class GlideImageLoader : IImageLoader {    override fun displayImage(item: Item, imageView: ImageView) {        if (item.type == PickerType.Image) {            Glide.with(imageView).load(item.uri).into(imageView)        } else {            Glide.with(imageView).load(Uri.fromFile(File(item.path))).into(imageView)        }    }}// 全局注册加载器,可以卸载Application里面,不影响启动速度ImagePickerService.registerImageLoader(GlideImageLoader())

第四步:获取返回结果

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {        super.onActivityResult(requestCode, resultCode, data)        if (resultCode == RESULT_OK && requestCode == 0x22) {            val paths = MXPickerBuilder.getPickerResult(data) //返回List<String>类型数据            println(paths)        }    }

调取摄像头单独拍摄照片

val builder = MXCaptureBuilder().setType(MXPickerType.Image)startActivityForResult(builder.createIntent(this), 0x11)// 在onActivityResult获取结果val file = builder.getCaptureFile()

调取摄像头单独拍摄视频

val builder = MXCaptureBuilder().setType(MXPickerType.Video).setMaxVideoLength(10)startActivityForResult(builder.createIntent(this), 0x11)// 在onActivityResult获取结果val file = builder.getCaptureFile()

图片查看器

Image text

ImgShowActivity.open(    this, arrayListOf(        "http://videos.jzvd.org/v/饺子主动.jpg",        "http://videos.jzvd.org/v/饺子运动.jpg"    ), "图片详情")

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap