序言:
前阵子开发了一个浏览器的app,其中碰到一个难题,就是浏览器的多窗口。当时搜索了整个百度和google,都没有特别好的解决方案,最后用了一个笨方法实现了这个多窗口的功能。特意写出这篇文章,一来是为了后人碰到这种需求时,起码有一个解决方案。二来是一起学习交流,一起讨论看看还有什么更好的解决方案。
预览图:
实现:
多窗口我采用的是viewpager+fragment的实现方式,在用户点击多窗口时,把整个viewpager缩小。并且加上动画效果
然后给viewpager的List<Fragment> 多添加一条数据,Fragment可以重复使用同一个。 最后用notifyDataSetChanged()刷新数据适配器,用setCurrentItem来跳转到新创建出来的Fragment,再把viewpager的缩小还原成正常。
这样,添加多窗口的工作就全部完成了。
参考demo:https://github.com/Z-bm/Dainty (非本人所写,只是思路是一样的)
思考:
用这样的方式有什么缺点? 缺点是非常明显的,当viewpager的fragment个数过多,会造成很明显的卡顿(因为这个fragment上承载的内容太多)。其次 多窗口的上滑关闭功能只能关闭当前的页面,如果用户想在当前页面,关闭掉右边的页面,是不可以的。 但是目前我也没有