{"id":13642936,"url":"https://github.com/jeasonlzy/NineGridView","last_synced_at":"2025-04-20T21:32:03.779Z","repository":{"id":122731311,"uuid":"50580748","full_name":"jeasonlzy/NineGridView","owner":"jeasonlzy","description":"类似QQ空间，微信朋友圈，微博主页等，展示图片的九宫格控件，自动根据图片的数量确定图片大小和控件大小，使用Adapter模式设置图片，对外提供接口回调，使用接口加载图片,支持任意的图片加载框架,如 Glide,ImageLoader,Fresco,xUtils3,Picasso 等，支持点击图片全屏预览大图。","archived":false,"fork":false,"pushed_at":"2018-02-24T17:19:28.000Z","size":12075,"stargazers_count":2463,"open_issues_count":65,"forks_count":465,"subscribers_count":63,"default_branch":"master","last_synced_at":"2025-04-07T23:11:21.559Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jeasonlzy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2016-01-28T12:16:02.000Z","updated_at":"2025-03-31T09:48:02.000Z","dependencies_parsed_at":null,"dependency_job_id":"4de3bf77-9688-487f-a8d5-d92aab2e42a6","html_url":"https://github.com/jeasonlzy/NineGridView","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeasonlzy%2FNineGridView","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeasonlzy%2FNineGridView/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeasonlzy%2FNineGridView/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeasonlzy%2FNineGridView/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jeasonlzy","download_url":"https://codeload.github.com/jeasonlzy/NineGridView/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249965545,"owners_count":21352925,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T01:01:38.298Z","updated_at":"2025-04-20T21:32:03.410Z","avatar_url":"https://github.com/jeasonlzy.png","language":"Java","funding_links":[],"categories":["Java","图片"],"sub_categories":[],"readme":"# NineGridView\n类似QQ空间，微信朋友圈，微博主页等，展示图片的九宫格控件，自动根据图片的数量确定图片大小和控件大小，使用Adapter模式设置图片，对外提供接口回调，支持任意的图片加载框架,如 Glide,ImageLoader,Fresco,xUtils3,Picasso 等，支持点击图片全屏预览大图。\n\n\n该项目是根据：[https://github.com/laobie/NineGridImageView](https://github.com/laobie/NineGridImageView) 修改而成，进行了优化扩展，使代码更加简单，喜欢原作的可以去使用。同时欢迎大家下载体验本项目，如果使用过程中遇到什么问题，欢迎反馈。\n\n### 联系方式\n * 邮箱地址： liaojeason@126.com\n * QQ群： 489873144 （建议使用QQ群，邮箱使用较少，可能看的不及时）\n * 本群刚建立，旨在为使用我的github项目的人提供方便，如果遇到问题欢迎在群里提问。个人能力也有限，希望一起学习一起进步。\n\n\n## 演示\n ![image](https://github.com/jeasonlzy/Screenshots/blob/master/NineGridView/demo9.png) ![image](https://github.com/jeasonlzy/Screenshots/blob/master/NineGridView/demo10.gif) ![image](https://github.com/jeasonlzy/Screenshots/blob/master/NineGridView/demo3.png) ![image](https://github.com/jeasonlzy/Screenshots/blob/master/NineGridView/demo14.gif) ![image](https://github.com/jeasonlzy/Screenshots/blob/master/NineGridView/demo12.png)![image](https://github.com/jeasonlzy/Screenshots/blob/master/NineGridView/demo8.png)\n\n## 1.用法\n使用前，对于Android Studio的用户，可以选择添加:\n```java\n\tcompile 'com.lzy.widget:ninegridview:0.2.0'\n```\n或者使用\n```java\n    compile project(':ninegridview')\n```\n\n## 2.项目功能\n * 使用Adapter模式设置图片\n * 当图片数量只有一张时，自动根据图片大小调整控件大小\n * 默认增加了图片点击全屏预览效果，并附带预览动画\n * 使用接口加载图片,支持任意的图片加载框架,如 Glide,ImageLoader,Fresco,xUtils3,Picasso 等\n * 整合了PhotoView图片预览\n * 使用接口抽出图片的加载方式，可以方便的将Glide替换成自己喜欢的ImageLoader等\n * 支持fill个grid两种显示模式\n * 当获取的图片数量超过最大显示的图片数量时，最后一张图片上会显示剩余数量（类似于QQ的动态效果）\n * 使用代码简单，只需要几行代码\n * 其他功能增加中......\n\n## 3.参数含义\n\n\u003ctable\u003e\n  \u003ctdead\u003e\n    \u003ctr\u003e\n      \u003cth align=\"center\"\u003e自定义属性名字\u003c/th\u003e\n      \u003cth align=\"center\"\u003e参数含义\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/tdead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003engv_singleImageSize\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e只显示一张图片时的最大图片大小\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003engv_singleImageRatio\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e只显示一张图片时图片宽高比\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003engv_gridSpacing\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e网格显示图片时，图片之间的间距，默认3dp\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003engv_maxSize\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e最多显示图片的数量，默认最大9张\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003engv_mode\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e支持fill和grid两种显示模式，其中grid模式在显示4张图片时采用2*2的布局\u003c/td\u003e\n    \u003c/tr\u003e\n     \u003c/tbody\u003e\n\u003c/table\u003e\n\n## 4.代码演示\n### 1.在Application中初始化NineGridView的图片加载器\n```java\n    NineGridView.setImageLoader(new PicassoImageLoader());\n\n    /** Picasso 加载 */\n    private class PicassoImageLoader implements NineGridView.ImageLoader {\n\n        @Override\n        public void onDisplayImage(Context context, ImageView imageView, String url) {\n            Picasso.with(context).load(url)//\n                    .placeholder(R.drawable.ic_default_image)//\n                    .error(R.drawable.ic_default_image)//\n                    .into(imageView);\n        }\n\n        @Override\n        public Bitmap getCacheImage(String url) {\n            return null;\n        }\n    }\n```\n### 2.在自己的Adapter中初始化NineGridView的适配器\n * `ImageInfo`是库中提供的数据Bean，需要两个url，分别表示小图和大图的url，没有大图或者小图，则都赋给相同的Url即可。\n * `ClickNineGridViewAdapter`是库中提供的默认实现了点击预览的Adapter，如果不想使用预览效果，可以自己继承 `NineGridViewAdapter` 实现其中 `onDisplayImage` 方法即可。\n```java\n\tArrayList\u003cImageInfo\u003e imageInfo = new ArrayList\u003c\u003e();\n    List\u003cEvaluationPic\u003e imageDetails = item.getAttachments();\n    if (imageDetails != null) {\n        for (EvaluationPic imageDetail : imageDetails) {\n            ImageInfo info = new ImageInfo();\n            info.setThumbnailUrl(imageDetail.smallImageUrl);\n            info.setBigImageUrl(imageDetail.imageUrl);\n            imageInfo.add(info);\n        }\n    }\n    holder.nineGrid.setAdapter(new ClickNineGridViewAdapter(context, imageInfo));\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeasonlzy%2FNineGridView","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjeasonlzy%2FNineGridView","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeasonlzy%2FNineGridView/lists"}