素材巴巴 > 程序开发 >

Android 开发浏览器 多窗口功能

程序开发 2023-09-16 17:17:47

序言:

前阵子开发了一个浏览器的app,其中碰到一个难题,就是浏览器的多窗口。当时搜索了整个百度和google,都没有特别好的解决方案,最后用了一个笨方法实现了这个多窗口的功能。特意写出这篇文章,一来是为了后人碰到这种需求时,起码有一个解决方案。二来是一起学习交流,一起讨论看看还有什么更好的解决方案。

 

预览图:

 

实现:

多窗口我采用的是viewpager+fragment的实现方式,在用户点击多窗口时,把整个viewpager缩小。并且加上动画效果

然后给viewpager的List 多添加一条数据,Fragment可以重复使用同一个。 最后用notifyDataSetChanged()刷新数据适配器,用setCurrentItem来跳转到新创建出来的Fragment,再把viewpager的缩小还原成正常。

这样,添加多窗口的工作就全部完成了。

 

参考demo:https://github.com/Z-bm/Dainty (非本人所写,只是思路是一样的)

 

思考:

用这样的方式有什么缺点? 缺点是非常明显的,当viewpager的fragment个数过多,会造成很明显的卡顿(因为这个fragment上承载的内容太多)。其次 多窗口的上滑关闭功能只能关闭当前的页面,如果用户想在当前页面,关闭掉右边的页面,是不可以的。 但是目前我也没有找到更好的办法。

 

最后:

不过我找到一个谷歌浏览器的开源项目,如果你自认为是一个强者,可以点击这里,来下载这个拥有世界级Android架构的项目。里面的多窗口功能做的非常好,但是,我花了数天 实在理不清这个项目。因为开发时间有限只能放弃。如果你理清楚了,也欢迎回来告诉我,我也想知道他里面的多窗口到底怎么实现的哈哈。

 

最后的最后:

吐槽一下,谷歌浏览器那个项目的代码 真的是人类写的?为什么我一行都看不懂?

 

 


标签:

素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。