# mojito **Repository Path**: walkerx/mojito ## Basic Information - **Project Name**: mojito - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-12-31 - **Last Updated**: 2021-12-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # mojito ![Language](https://img.shields.io/badge/language-java-orange.svg) ![Language](https://img.shields.io/badge/language-kotlin-orange.svg) [![](https://jitpack.io/v/MikaelZero/mojito.svg)](https://jitpack.io/#MikaelZero/mojito) [English](https://github.com/MikaelZero/mojito/blob/master/README_en.md) ## 功能列表 - 支持Coil图片加载器 - 支持Glide图片加载器 - 支持Fresco图片加载器 - 支持视频图片混合、GIF、图片预览 - 支持拖拽关闭 - 支持自定义页面索引指示器、进度条、Cover - 支持原图加载策略 ## 二维码下载体验 ## 通过视频查看效果 [SAMPLE VIDEO LINK](https://www.bilibili.com/video/BV1Df4y1y7Hq) ## 动图效果 # 开始 ------ ## 添加 dependencies ```gradle allprojects { repositories { maven { url 'https://jitpack.io' } } } implementation "com.github.mikaelzero.mojito:mojito:$mojito_version" //support long image and gif with Sketch implementation "com.github.mikaelzero.mojito:SketchImageViewLoader:$mojito_version" //load with coil implementation "com.github.mikaelzero.mojito:coilimageloader:$mojito_version" //load with glide implementation "com.github.mikaelzero.mojito:GlideImageLoader:$mojito_version" //load with fresco implementation "com.github.mikaelzero.mojito:FrescoImageLoader:$mojito_version" ``` ## 初始化 ```kotlin // in your application Mojito.initialize( GlideImageLoader.with(this), SketchImageLoadFactory() ) //or //YourMojitoConfig:IMojitoConfig Mojito.initialize( GlideImageLoader.with(this), SketchImageLoadFactory(), YourMojitoConfig() ) ``` ## 开始使用 ```kotlin Mojito.with(context) .urls(SourceUtil.getSingleImage()) .views(singleIv) .start() ``` # 使用 ## RecyclerView ```kotlin binding.recyclerView.mojito(R.id.srcImageView) { urls(SourceUtil.getNormalImages()) position(position) mojitoListener( onClick = { view, x, y, pos -> Toast.makeText(context, "tap click", Toast.LENGTH_SHORT).show() } ) progressLoader { DefaultPercentProgress() } setIndicator(NumIndicator()) } ``` ## 单个 View ```kotlin binding.longHorIv.mojito(SourceUtil.getLongHorImage()) ``` ## 无 View ```kotlin Mojito.start(context) { urls(SourceUtil.getNormalImages()) } ``` ## 视频 View or 视频/图片 混合View ```kotlin Mojito.start(context) { urls(SourceUtil.getVideoImages(), SourceUtil.getVideoTargetImages()) setMultiTargetEnableLoader(object : MultiTargetEnableLoader { override fun providerEnable(position: Int): Boolean { return position != 1 } }) setMultiContentLoader(object : MultiContentLoader { override fun providerLoader(position: Int): ImageViewLoadFactory { return if (position == 1) { ArtLoadFactory() } else { SketchImageLoadFactory() } } }) position(position) views(recyclerView, R.id.srcImageView) } ``` ## Callback回调 ```kotlin abstract class SimpleMojitoViewCallback : OnMojitoListener { // image click override fun onClick(view: View, x: Float, y: Float, position: Int) { } //image long press override fun onLongClick(fragmentActivity: FragmentActivity?, view: View, x: Float, y: Float, position: Int) { } //end of min image to max image override fun onShowFinish(mojitoView: MojitoView, showImmediately: Boolean) { } //activity finish,backToMin,single click override fun onMojitoViewFinish() { } //when you drag your image override fun onDrag(view: MojitoView, moveX: Float, moveY: Float) { } //the ratio of long image when you scroll override fun onLongImageMove(ratio: Float) { } } ``` ## API | Name | desc | | :-----| :----: | | url(src,target) |设置缩略图和原图url数据| | position | 点击的位置 | | views| 1. recylclerView,imageViewId
2. single view
3. multi views| | autoLoadTarget | 默认为true,如果你设置了原图的url并且设置了autoLoadTarget(false)
你需要使用setFragmentCoverLoader来自定义view| | setProgressLoader| 当你设置了 autoLoadTarget false 才会生效| | setIndicator | 可以选择 NumIndicator 或者 CircleIndexIndicator| | setActivityCoverLoader | 自定义Activity的覆盖层view| |setMultiContentLoader | 如果使用视频和图片混合模式,需要设置 ImageViewLoadFactory| ## Thanks [sketch](https://github.com/panpf/sketch) [BigImageViewer](https://github.com/Piasy/BigImageViewer)