Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

// 一个适用于AbsListView或者RecyclerView的仿朋友圈九宫格控件,针对View的复用做了二次缓存,减少创建View次数和减少measure/layout次数。

Notifications You must be signed in to change notification settings

razerdp/PhotoContents

Repository files navigation

朋友圈图片容器

Download

针对AbsListView或者RecyclerView来进行View的二级缓存,采取的是adapter模式以及观察者。

实现原理实际上很简单,大致如下:

众所周知,RecyclerView或者AbsListview的复用机制都是利用一个数组来缓存view组,在创建View的时候获取出来并传到adapter 当一个View移出屏幕的时候,它会被放到池里面,在下一个view(viewType相同)时,会取出 而取出的View实际上childView等是不变的,因此我们可以利用这个机制,在更新时,将所有view都缓存 然后对比出该view更新前后的不同进行addView

又因为我们知道addView/removeView会造成requestLayout从而重新走了一遍measure和layout,所以为了避免这个情况 我们使用了attachViewToParentdetachAllViewsFromParent这两个仅针对数组操作的方法来避免这个问题。

当然目前来说这个控件还只是一个初步版本,后续如果有时间我会慢慢优化的。

ps,本控件初衷是为了我的另一个项目一起撸个朋友圈吧服务,大部分的更新都会在那里提交,如果您需要获取新的更新信息,可以通过另一个项目获知。

Preview:

Download Download

Step 1.

Add the dependency

	dependencies {
	 compile 'com.github.razerdp:PhotoContents:{最新版}' //最新版看上方Jcenter标签
	}

Update log

  • 2019年12月10日
    • 增加复用池拦截器,允许自行添加复用池逻辑
  • 2019年07月08日
    • 重构
  • 2017年02月20日
    • 修复点击后点击空白页面响应了之前的点击事件的问题

About

// 一个适用于AbsListView或者RecyclerView的仿朋友圈九宫格控件,针对View的复用做了二次缓存,减少创建View次数和减少measure/layout次数。

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

Languages

AltStyle によって変換されたページ (->オリジナル) /