Skip to content
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>
Clone this wiki locally