[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-7545":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":17,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":38,"readmeContent":39,"aiSummary":40,"trendingCount":16,"starSnapshotCount":16,"syncStatus":41,"lastSyncTime":42,"discoverSource":43},7545,"StfalconImageViewer","stfalcon-studio\u002FStfalconImageViewer","stfalcon-studio","A simple and customizable Android full-screen image viewer with shared image transition support, \"pinch to zoom\" and \"swipe to dismiss\" gestures","http:\u002F\u002Fstfalcon.com",null,"Kotlin",2027,272,32,44,0,1,59.91,"Apache License 2.0",false,"master",true,[24,25,26,27,28,29,30,31,32,33,34,35,36,37],"android","android-library","easy-to-use","gallery","image","imageviewer","photo","photo-gallery","pinch-to-zoom","swipe-to-dismiss","transition","transitions","viewer","zoom","2026-06-12 04:00:34","[![codebeat badge](https:\u002F\u002Fcodebeat.co\u002Fbadges\u002F91ce76f4-cba6-4971-aad7-070e635d11be)](https:\u002F\u002Fcodebeat.co\u002Fprojects\u002Fgithub-com-stfalcon-studio-stfalconimageviewer-master)\n[![Codacy Badge](https:\u002F\u002Fapi.codacy.com\u002Fproject\u002Fbadge\u002FGrade\u002F23c4c8c6f44541a8bfdb0e385da2436a)](https:\u002F\u002Fwww.codacy.com\u002Fapp\u002Ftroy.carvill\u002FStfalconImageViewer?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=stfalcon-studio\u002FStfalconImageViewer&amp;utm_campaign=Badge_Grade)\n[![Download](https:\u002F\u002Fapi.bintray.com\u002Fpackages\u002Ftroy379\u002Fmaven\u002FStfalconImageViewer\u002Fimages\u002Fdownload.svg) ](https:\u002F\u002Fbintray.com\u002Ftroy379\u002Fmaven\u002FStfalconImageViewer\u002F_latestVersion)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-Apache%202.0-blue.svg)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FApache-2.0)\n\n# Stfalcon ImageViewer\nA simple and customizable full-screen image viewer with shared image transition support, \"pinch to zoom\" and \"swipe to dismiss\" gestures. Compatible with all of the most popular image processing libraries such as `Picasso`, `Glide` etc.\nBased on [PhotoView](https:\u002F\u002Fgithub.com\u002Fchrisbanes\u002FPhotoView) by [chrisbanes](https:\u002F\u002Fgithub.com\u002Fchrisbanes).\n\n![alt tag](images\u002Fimage_viewer_main_demo.gif) ![alt tag](images\u002Fimage_viewer_transition_demo.gif)\n\n### Who we are\nNeed iOS and Android apps, MVP development or prototyping? Contact us via info@stfalcon.com. We develop software since 2009, and we're known experts in this field. Check out our [portfolio](https:\u002F\u002Fstfalcon.com\u002Fen\u002Fportfolio) and see more libraries from [stfalcon-studio](https:\u002F\u002Fstfalcon-studio.github.io\u002F).\n\n### Requirements\n* A project configured with the AndroidX\n* SDK 19 and and higher\n\n### Demo Application\n[![Get it on Google Play](https:\u002F\u002Fplay.google.com\u002Fintl\u002Fen_us\u002Fbadges\u002Fimages\u002Fbadge_new.png)](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.stfalcon.stfalconimageviewersample)\n\n### Install\nDownload via **Gradle**:\n\nAdd this to the **project `build.gradle`** file:\n```gradle\nallprojects {\n    repositories {\n        ...\n        maven { url \"https:\u002F\u002Fjitpack.io\" }\n    }\n}\n```\n\nAnd then add the dependency to the **module `build.gradle`** file:\n```gradle\nimplementation 'com.github.stfalcon-studio:StfalconImageViewer:v1.0.1'\n```\n\nDownload via **Maven**:\n```\n\u003Cdependency>\n  \u003CgroupId>com.github.stfalcon\u003C\u002FgroupId>\n  \u003CartifactId>stfalcon-imageviewer\u003C\u002FartifactId>\n  \u003Cversion>latest_version\u003C\u002Fversion>\n  \u003Ctype>pom\u003C\u002Ftype>\n\u003C\u002Fdependency>\n```\n\nWhere the `latest_version` is the value from `Download` badge.\n\n### Usage\n#### Simple usage\nAll you need to show the viewer is to pass the context, list or array of your image objects and the implementation of the `ImageLoader` and call the `show()` method:\n```java\nStfalconImageViewer.Builder\u003CImage>(context, images) { view, image ->\n    Picasso.get().load(image.url).into(view)\n}.show()\n```\nPiece of cake!\n\n#### Transition animation\nTo improve the UX of your app you would like to add a transition when a user opens the viewer. And this is simple as never before! Just tell the viewer which image should be used for animation using `withTransitionFrom(myImageView)` method and the library will do it for you!\n\nIf you need more advanced behavior like updating transition target while changing images in the viewer please see the sample app for how to do this.\n\n#### Update images list on the fly\nThere are a lot of common cases (such as pagination, deleting, editing etc.) where you need to update the existing images list while the viewer is running. To do this you can simply update the existing list (or even replace it with a new one) and then call `updateImages(images)`.\n\n#### Change current image\nImages are not always leafed through by the user. Maybe you want to implement some kind of preview list at the bottom of the viewer - `setCurrentPosition` is here for help. Change images programmatically wherever you want!\n\n#### Custom overlay view\nIf you need to show some content over the image (e.g. sharing or download button, description, numeration etc.) you can set your own custom view using the `setOverlayView(customView)` and bind it with the viewer through the `ImageViewer.OnImageChangeListener`.\n\n#### Background\nUse the `setBackgroundColorRes(colorRes)` or `setBackgroundColor(colorInt)` to set a color of the fading background.\n\n#### Images margin\nSimply add margins between images using the `withImagesMargin(context, dimenRes)` method for dimensions, or use the `withImageMarginPixels(int)` for pixels size.\n\n#### Container padding\nOverlay image hides part of the images? Set container padding with dimens using `withContainerPadding(context, start, top, end, bottom)` or `withContainerPadding(context, dimen)` for all of the sides evenly.\nFor setting a padding in pixels, just use the `withContainerPadding(...)` methods variant.\n\n#### Status bar visibility\nControl the status bar visibility of the opened viewer by using the `withHiddenStatusBar(boolean)` method (`true` by default)\n\n#### Gestures\nIf you need to disable some of the gestures - you can use the `allowSwipeToDismiss(boolean)` and `allowZooming(boolean)` methods accordingly.\n\n#### Options overview\nHere is the example with all of the existing options applied:\n```java\nStfalconImageViewer.Builder\u003CString>(this, images, ::loadImage)\n            .withStartPosition(startPosition)\n            .withBackgroundColor(color)\n            \u002F\u002F.withBackgroundColorResource(R.color.color)\n            .withOverlayView(view)\n            .withImagesMargin(R.dimen.margin)\n            \u002F\u002F.withImageMarginPixels(margin)\n            .withContainerPadding(R.dimen.padding)\n            \u002F\u002F.withContainerPadding(R.dimen.paddingStart, R.dimen.paddingTop, R.dimen.paddingEnd, R.dimen.paddingBottom)\n            \u002F\u002F.withContainerPaddingPixels(padding)\n            \u002F\u002F.withContainerPaddingPixels(paddingStart, paddingTop, paddingEnd, paddingBottom)\n            .withHiddenStatusBar(shouldHideStatusBar)\n            .allowZooming(isZoomingAllowed)\n            .allowSwipeToDismiss(isSwipeToDismissAllowed)\n            .withTransitionFrom(targeImageView)\n            .withImageChangeListener(::onImageChanged)\n            .withDismissListener(::onViewerDismissed)\n            .withDismissListener(::onViewerDismissed)\n```\n\nAlso, you can take a look at the [sample project](https:\u002F\u002Fgithub.com\u002Fstfalcon-studio\u002FStfalconImageViewer\u002Ftree\u002Fmaster\u002Fsample) for more information.\n\n### Usage with Fresco\nIf you use the Fresco library - check out the [FrescoImageViewer](https:\u002F\u002Fgithub.com\u002Fstfalcon-studio\u002FFrescoImageViewer) which was also developed by our team.\n\n### License\n```\nCopyright (C) 2018 stfalcon.com\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttp:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n```\n","StfalconImageViewer 是一个简单且可自定义的全屏图片查看器，支持共享图片过渡效果、捏合缩放和滑动关闭手势。该项目使用 Kotlin 编写，兼容主流的图片处理库如 Picasso 和 Glide，并基于 Chris Banes 的 PhotoView 开发。其核心功能包括流畅的图片加载与显示、自然的手势操作以及平滑的过渡动画，非常适合需要在 Android 应用中展示图片集的应用场景，比如画廊、相册或任何需要增强用户体验的图片浏览功能。",2,"2026-06-11 03:12:58","top_language"]