WImagePreview
基于ViewPager2构建的Android图片预览组件,解决显示大尺寸图片和大批量图片时带来的性能问题
Install / Use
/learn @Wei-1021/WImagePreviewREADME
WImagePreview
本项目是基于ViewPager2构建的一个Android图片预览组件,解决显示大尺寸图片和大批量图片时带来的性能问题
仓库:
如何导入
1.在项目根目录下的build.gradle添加
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
2.引入依赖(最新的版本查看上面的jitpack标签,因为有时候会忘记更新文档)
dependencies {
implementation 'com.github.Wei-1021:WImagePreview:1.4.3'
}
使用方式
使用示例:
以下为使用示例,不代表所有功能
WImagePreviewBuilder
.load(MainActivity.this)
.setData(imageList)
.setPosition(position)
.setOnPageListener(new OnPageListener() {
@Override
public void onClick(Object o, int position) {
super.onClick(o, position);
}
})
.start();
功能
属性
| 方法 | 是否必须 | 描述 | |----------------------------------------------------------------|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | load(Context context)<br/>load(Fragment fragment) | <b>是</b> | 加载图片预览组件 | | setData(List<T> imgList) | <b>是</b> | 设置图片集合数据 | | setPosition(int position) | <b>是</b> | 设置图片下标定位 | | start() | <b>是</b> | 启动组件 | | setOrientation(int orientation) | 否 | 设置滚动方向<br/>水平滚动:ViewPager2.ORIENTATION_HORIZONTAL(默认);<br/>垂直滚动:ViewPager2.ORIENTATION_VERTICAL。 | | setShowNumIndicator(boolean isShowNumIndicator) | 否 | 设置是否显示数字指示器,默认显示 | | setAllowMove(boolean isAllowImage) | 否 | 设置是否允许滑动,设置禁止滑动后,与之相关的三个监听方法(onPageScrolled、onPageSelected、onPageScrollStateChanged)将无法生效。<br/>true:允许(默认);<br/>false:不允许 | | setFullscreen(boolean isFullscreen) | 否 | 设置是否全屏<br/>true:全屏(默认);<br/>false:非全屏 | | setShowClose(boolean isShowClose) | 否 | 是否显示关闭按钮<br/>true:显示(默认);<br/>false:不显示 | | setShowMenu(boolean isShowMenu) | 否 | 是否显示功能菜单按钮,默认不显示 | | setMoreMenu(List<WMenuItemInfo> menuItemInfoList) | 否 | 设置功能菜单,具体内容查看<b>WMenuItemInfo</b>类 | | setInfiniteLoop(boolean isInfiniteLoop) | 否 | 设置是否允许无限循环滑动,默认允许无限循环滑动 | | setOffscreenPageLimit(int offscreenPageLimit) | 否 | 设置预加载个数,默认1。<br/>offscreenPageLimit:预加载的个数 | | setAnim(int anim) | 否 | 设置组件进出场动画。预设了八种进出场动画的组合(具体查看下方介绍)。<br/>anim:进出场动画;详见WAnim类中ALL_格式的参数 | | setInAnim(int enterAnim, int exitAnim) | 否 | 设置预览组件进场动画。<br/>enterAnim:目标页面的进场动画;详见WAnim类中IN_格式的参数<br/>exitAnim:当前页面的退场动画;详见WAnim类中OUT_格式的参数 | | setOutAnim(int enterAnim, int exitAnim) | 否 | 设置预览组件退场动画。<br/>enterAnim:上一个页面的进场动画;详见WAnim类中IN_格式的参数<br/>exitAnim:当前页面的退场动画;详见WAnim类中OUT_*格式的参数 | | setPageMargin(int pageMargin) | 否 | 设置ViewPager2页面间距(默认为10)<br/><b>setPageMargin()</b>和<b>setPageTransformer()</b>只能设置其中一个,如果两个都设置,则只有<b>setPageTransformer()</b>生效 | | setPageTransformer(int pageTransformer) | 否 | 设置页面切换动画 <br/><b>setPageMargin()</b>和<b>setPageTransformer()</b>只能设置其中一个,如果两个都设置,则只有<b>setPageTransformer()</b>生效<br/>pageTransformer:动画类型;详见PageTransformer中的常量 | | setPageTransformer(ViewPager2.PageTransformer pageTransformer) | 否 | 设置页面切换动画 <br/><b>setPageMargin()</b>和<b>setPageTransformer()</b>只能设置其中一个,如果两个都设置,则只有<b>setPageTransformer()</b>生效<br/>pageTransformer:动画类型;详见PageTransformer 或者可以通过实现ViewPager2.PageTransformer接口进行自定义动画 | | setOnPageListener(OnPageListener listener) | 否 | 设置监听器,对应下方监听方法 |
功能菜单类: WMenuItemInfo
参数
| 名称 | 介绍 | |--------------------|--------------------------------------------------------| | name | 名称 | | icon | 字体图标,可以使用<b>WIcon</b>图标常量类,也可以使用自定义的图标库(必须是&#x***;的格式) | | iconDraw | 图片图标 | | textColor | 字体颜色 | | background | 背景Drawable | | backgroundColor | 背景色 | | onMenuItemListener | 监听器 |
监听器:OnMenuItemListener
| 名称 | 介绍 | |---------------------------------------------------------------|------| | onClick(WRecyclerView recyclerView, Object obj, int position) | 点击监听 |
使用方法
List<WMenuItemInfo> wMenuItemInfoList = new ArrayList<>();
WMenuItemInfo wMenuItemInfo1 = new WMenuItemInfo("保存", WIcon.ANT_DOWNLOAD, new OnMenuItemListener() {
@Override
public void onClick(WRecyclerView recyclerView, Object obj, int position) {
super.onClick(recyclerView, obj, position);
Log.i(TAG, "onClick: " + obj + ", " + position);
recyclerView.setInvisible();
}
});
wMenuItemInfoList.add(wMenuItemInfo1);
WImagePreviewBuilder
.load(MainActivity.this)
.setData(imageList)
.setPosition(0)
.setMoreMenu(wMenuItemInfoList)
.start();
进退场动画
常量
| 名称 | 介绍 | |-------------------------|------------| | ALL_BOTTOM_IN_TOP_OUT | 下进上出 | | ALL_TOP_IN_BOTTOM_OUT | 上进下出 | | ALL_LEFT_IN_RIGHT_OUT | 左进右出 | | ALL_RIGHT_IN_LEFT_OUT | 右进左出 | | ALL_CENTER_ZOOM | 中间缩放 | | ALL_OUTSIDE_SCALE | 外围缩放(从外往里) | | ALL_LTOP_IN_RBOTTOM_OUT | 左上进,右下出 | | ALL_ROTATE_IN_FADE_OUT | 旋转缩放进,透明淡出 |
使用方式
WImagePreviewBuilder
.load(MainActivity.this)
.setData(imageList)
.setPosition(position)
.setAnim(WAnim.ALL_OUTSIDE_SCALE)
.start();
翻页动画:PageTransformer
常量
| 名称 | 描述 | 效果演示 |
|---------------------------|--------|-------------------------|
| PAGE_TRANSFORM_ZOOM_OUT | 景深 |
|
| PAGE_TRANSFORM_DEPTH | 叠层 |
|
| PAGE_TRANSFORM_FLIP | 翻转 |
|
| PAGE_TRANSFORM_PUSH | 推压 |
|
| PAGE_TRANSFORM_ROTATE | 旋转 |
|
| PAGE_TRANSFORM_SQUARE_BOX | 方块
