其他
实践 | 为 Trackr app 适配大屏幕设备
Trackr
http://github.com/android/trackr
导航
调整后: 当屏幕变宽时,我们显示导航轨道 (navigation rail) 来取代底部应用栏。我们也将悬浮操作按钮 (用于打开新建任务界面) 放到导航轨道中,从而完全移除底部应用栏。
navigation rail
https://material.io/components/navigation-rail
双窗格布局
△ 在手机上这样显示很自然,
但在大屏幕上的空间利用率却不太理想。
SlidingPaneLayout
https://developer.android.google.cn/reference/kotlin/androidx/slidingpanelayout/widget/SlidingPaneLayout显示列表/详细信息布局
https://developer.android.google.cn/guide/topics/ui/layout/twopane
△ 双窗格布局能更好地利用屏幕空间
编辑任务和新建任务
△ 左侧: 手机上的编辑任务界面。
右侧: 平板上的编辑任务界面。
起初我们尝试将编辑任务界面取代任务详细信息 (Task Detail) 显示在详细信息窗格中。虽然这样很直截了当,但我们很快就发现这种实现方式并不能让我们满意,原因如下:
这对于创建新建任务 (New Task) 界面是没有意义的,因为它已经位于导航轨道中,可以全局访问了。我们可以将其作为单独的导航目的页面,并分配不同的行为,但是感觉这不是个好办法。 编辑任务 (Edit Task) 看起来与任务详细信息 (Task Detail) 非常相似,只不过其中的属性字段是可以编辑的。在双窗格布局中,如果我们在详情窗格里将任务详细信息替换为编辑任务,那么看起来似乎没有发生什么变化——界面中必要的视觉强调还不够。相比之下,DialogFragment 吸引了用户,让关注点处于前面和中间。 在用户保存自己的改动或是我们确认用户的修改可以取消之前,我们不希望从编辑任务 (或者新建任务) 界面导航到其他地方。原本全屏显示编辑界面时,这种请求很容易被拦截,因为唯一离开此界面的方式就是使用返回键。但是使用双窗格布局之后,我们还需要关注额外的情况: 用户可以点击导航轨道中的其他按钮,或是列表窗格中的其他任务来切换。临时禁用这些元素会很麻烦。使用 DialogFragment 之后,所有的这些元素都位于对话框之后,使得用户不能与它们交互,这恰恰是我们想要的效果。
小结
推荐阅读