-
Notifications
You must be signed in to change notification settings - Fork 50
Home
FlyJingFish edited this page Jul 31, 2022
·
55 revisions
图片视频浏览器
属于你的图片浏览器,完美的过渡动画,同样支持视频,我写出来一个视频使用Demo,本库本身不带这个功能, 您可以自定义加载图片的内核,例如Glide,Picasso....我写了这两种Demo供大家参考,本库侵入性低 第一步. 根目录build.gradle allprojects { repositories { maven { url 'https://jitpack.io' } } }
第二步. 需要引用的build.gradle
dependencies {
implementation 'com.github.FlyJingFish:OpenImage:Tag'
}
使用说明:
1,您需要实现BigImageHelper接口并设置它,它是加载大图的关键
OpenImageConfig.getInstance().setBigImageHelper(new BigImageHelperImpl());
2,如果有需要打开视频请实现VideoFragmentCreate 并继承BaseImageFragment否则动画效果可能不够完善
OpenImageConfig.getInstance().setVideoFragmentCreate(new VideoFragmentCreateImpl());
3,如果有需要定制请实现ImageFragmentCreate 并继承BaseImageFragment否则动画效果可能不够完善
OpenImageConfig.getInstance().setImageFragmentCreate(new ImageFragment());
4,打开图片时
OpenImage.with(RecyclerViewActivity.this).setClickRecyclerView(binding.rv.rv,new SourceImageViewIdGet() { @Override public int getImageViewId(OpenImageUrl data, int position) { return R.id.iv_image; } }) .setSrcImageViewScaleType(ImageView.ScaleType.CENTER_CROP,true) .setImageUrlList(datas).setImageDiskMode(MyImageLoader.imageDiskMode) .setItemLoadHelper(new ItemLoadHelper() { @Override public void loadImage(Context context, OpenImageUrl openImageUrl, String imageUrl, ImageView imageView, int overrideWidth, int overrideHeight, OnLoadCoverImageListener onLoadCoverImageListener) { MyImageLoader.getInstance().load(imageView, imageUrl,overrideWidth,overrideHeight, R.mipmap.img_load_placeholder, R.mipmap.img_load_placeholder, new MyImageLoader.OnImageLoadListener() { @Override public void onSuccess() { onLoadCoverImageListener.onLoadImageSuccess(); } @Override public void onFailed() { onLoadCoverImageListener.onLoadImageFailed(); } }); } }) .setOpenImageStyle(R.style.DefaultPhotosTheme) .setClickPosition(position).show();
5,自定义样式
//页面背景可以是图片或颜色 <attr format="reference|color" name="openImage.background"/> //页面切换方向 <attr format="enum" name="openImage.viewPager.orientation"> <enum name="horizontal" value="0" /> <enum name="vertical" value="1" /> </attr> //以下指示器相关距离设置 <attr format="dimension" name="openImage.indicator.marginStart"/> <attr format="dimension" name="openImage.indicator.marginEnd"/> <attr format="dimension" name="openImage.indicator.marginTop"/> <attr format="dimension" name="openImage.indicator.marginBottom"/> <attr format="dimension" name="openImage.indicator.marginLeft"/> <attr format="dimension" name="openImage.indicator.marginRight"/> //指示器在页面的位置 <attr format="flags" name="openImage.indicator.gravity"> <flag name="top" value="0x30" /> <flag name="bottom" value="0x50" /> <flag name="left" value="0x03" /> <flag name="right" value="0x05" /> <flag name="center_vertical" value="0x10" /> <flag name="center_horizontal" value="0x01" /> <flag name="center" value="0x11" /> <flag name="start" value="0x00800003" /> <flag name="end" value="0x00800005" /> </attr> //指示器文字或图片 <attr format="enum" name="openImage.indicator.type"> <enum name="text" value="0"/> <enum name="image" value="1"/> </attr> //如果指示器是文本可以设置例如(%1$d/%2$d) --> (1/10) <attr format="reference" name="openImage.indicator.textFormat"/> //文本指示器颜色 <attr format="reference|color" name="openImage.indicator.textColor"/> //文本大小 <attr format="dimension" name="openImage.indicator.textSize"/> //图片指示器资源 <attr format="reference|color" name="openImage.indicator.imageRes"/> //图片指示器每个之间的间隔 <attr format="dimension" name="openImage.indicator.image.interval"/> //图片指示器排列方向 <attr format="enum" name="openImage.indicator.image.orientation"> <enum name="horizontal" value="0" /> <enum name="vertical" value="1" /> </attr> //页面状态栏字体颜色 <attr format="enum" name="openImage.statusBar.fontStyle"> <enum name="light" value="0" /> <enum name="dark" value="1" /> </attr>