Design philosophy

    Android 在Android 3.0API中就引入了Fragment,它主要用来提供一种在大屏幕上更加动态和灵活地创建UI的解决方案,比如平板设备。平板设备的屏幕比手持设备的屏幕大,所以平板设备上有更多的空间去放置和交换UI控件。Fragment使得这样宽松的设计方案(在小设备上)成为可能,而且不需要自己去管理复杂的View层次结构。通过将一个Activity的UI组建放置到多个fragment中,你可以动态地改变Activity的外观,并将这种改变保存在Activity维护的一个备份堆栈中。

    比如,一个新闻类app,它可以使用一个fragment在右边显示新闻列表,用另外一个fragment在左边显示新闻内容,这两个fragment紧靠着显示在同一个Activity里,每个fragment都有它自己的生命周期回调函数,每个fragment都会处理自己的输入事件。这样,用户就可以在同一个Activity里选择和阅读文章,而不是一个Activity里选择文章,再到另一个Activity里去阅读。

    你可以将每个fragment设计成一个可以在Activity里重用的模块化组件。可以这样做是因为每个fragment都定义了自己的布局,都有自己的回调处理函数,并且你可以在多个Activity中包含同一个fragment,因此你要以可复用为目的去设计,避免从一个fragment中直接操作另一个fragment。这一点在你用这些模块化组件为不同大小的设备调整你的组合方式时显得尤为重要。在设计同时支持平板和手持设备的app时,你可以复用你的带有不同参数的fragment,使其根据设备的可用空间来提升用户体验。例如,在手持设备上,当同一个Activity没办法显示多个fragment时,我们可以将一个fragment独立成一个独立的页面。

    比如——继续新闻类App的例子——在平板设备大小的设备上,程序可以将两个fragments整合到一个Activity A。但是,在手持设备屏幕上没有足够的空间容纳这两个fragment,所以,我们可以让Acivity A值包含用来显示文章列表的fragment,当用户选择了一片文章,程序触发Activity B,让Activity B的fragment读取文章内容。就这样,这个App通过不同的组合可复用fragment的方式,实现了同时支持平板设备和手持设备。

你可能感兴趣的:(adroid,设计的艺术)