Android 开发浏览器 多窗口功能

序言:

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

 

预览图:

 

实现:

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

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

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

 

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

 

思考:

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

 

最后:

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

 

最后的最后:

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

 

 

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值