仿微信朋友圈图片预览,目前仅支持图片预览
主要特色:
建议下载demoApk查看
添加 JitPack repository 到你的 build 文件
allprojects {
repositories {
maven { url 'https://www.jitpack.io' }
}
}
增加依赖
dependencies {
implementation 'com.github.wanggaowan:PhotoPreview:latest.release.here'
}
预览单张照片
PhotoPreview
.with(activity)
.sources(url)
.imageLoader((position, source, imageView) -> {
Glide.with(imageView.getContext())
.load((String) source)
.into(imageView);
})
.build()
.show(thumbnailView); // 指定缩略图
设置全局图片加载器
PhotoPreview.setGlobalImageLoader((position, source, imageView) -> {
Glide.with(imageView.getContext())
.load((String) source)
.into(imageView);
});
全部配置
PhotoPreview
.with(activity) // 打开预览的界面(缩略图所处界面),预览生命周期与activity绑定
// .with(fragment) // 打开预览的界面(缩略图所处界面),预览生命周期与fragment绑定
.config(config) // 应用其它配置,以下配置覆盖此config中对应的属性
.imageLoader(imageLoader) // 图片加载器
.indicatorType(IndicatorType.DOT) // 图片指示器类型(目前只有圆点和文本),预览>=2张图片时有效
.maxIndicatorDot(9) // indicatorType为DOT时,设置DOT最大数量,如果sources数量超过此值,则改用IndicatorType.TEXT
.selectIndicatorColor(selectColor) // 指示当前预览界面指示器颜色
.normalIndicatorColor(normalColor) // 非当前预览界面指示器颜色
.progressDrawable(drawable) // 图片加载loading drawable,用于imageLoader加载图片之前显示
.progressColor(color) // 图片加载loading color, android5.0(含)之后有效
.delayShowProgressTime(delay) // 图片加载loading延迟展示时间,<0:不展示,=0:立即显示,>0:延迟给定时间显示
.fullScreen(true) // 是否全屏预览,如果设置为null则采用跟随模式(预览界面是否全屏显示看打开预览的界面是否全屏)
.defaultShowPosition(0) // 默认预览的图片位置,用于多图预览
.sources(urls) // 设置图片数据,有sources(Object...)和source(List)两个重载
.onLongClickListener(listener) // 设置图片长按监听
.onDismissListener(listener) // 设置预览关闭监听
.animDuration(400) // 动画时间,null:使用默认时间,<=0: 不执行动画
.shapeTransformType(ShapeTransformType.CIRCLE) // 图形变换类型,针对缩略图是圆形或圆角矩形
.shapeCornerRadius(50) // 仅当图形变换类型设置为ShapeTransformType.ROUND_RECT时,指定圆角矩形圆角半径
.showThumbnailViewMask(true) // 是否展示缩略图蒙层,如果设置为true,则预览动画执行时,缩略图不显示,预览更沉浸
.openAnimStartHideOrShowStatusBar(true) // 是否在打开预览动画执行开始的时候执行状态栏隐藏/显示操作
.onPageChangeListener(listener) // 图片滑动/选中/滑动状态变更监听
.build()
.show(thumbnailView); // 展示预览,有show()、show(View)、show(IFindThumbnailView)三个重载
预览库采用一个Activity/Fragment持有一个对象,因此如果需要主动关闭预览,采用如下方式即可:
PhotoPreview
.with(activity)
// .with(fragment)
.build()
.dismiss();
.shapeTransformType(type)
,则过度动画打开和关闭可能都不能无缝衔接,指定后其实也是调整为其它缩放模式,
因此缩略图尽量不使用ScaleType.MATRIX缩放类型.shapeTransformType(ShapeTransformType.CIRCLE)
时,如果缩略图宽高不相等,那么指定缩列图缩放类型为ScaleType.FIT_XY、
ScaleType.CENTER_CROP后,预览动画不能无缝衔接,因此需要切圆的缩列图,尽量保证控件宽高一致或使用其它缩放类型.openAnimStartHideOrShowStatusBar(false)
,避免预览动画与状态栏动画交替执行此库灵感来源 PhotoViewer
动画优化参考 XPopup
无需添加任何混淆规则,可直接混淆
PhotoPreview is released under the Apache 2.0 license.
Copyright 2019 wanggaowan.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.