答复: 圆角屏幕(例:手表)的锁屏问题

液晶的显示晶格即使做得再小也是方形的,这就是个致命问题。

发自我的 Windows Phone
________________________________
发件人: 锦江 赵<mailto:zhaojinjiang@me.com>
发送时间: ‎2015/‎3/‎27 8:29
收件人: Kang-Hao (Kenny) Lu(吕康豪)<mailto:lvkanghao@genomics.cn>
抄送: W3C HTML5 中文興趣小組<mailto:public-html-ig-zh@w3.org>
主题: Re: 圆角屏幕(例:手表)的锁屏问题

圆形屏幕和圆角屏幕相比确实已经完全不能跟矩形屏幕相提并论了
我分享一些自己想到的:

1. 从现有的实现方式上看,这似乎更像是 device-orientation[1] + rotate[2] 做的事情
2. “360度”的方向会涉及到一个灵敏度的问题,得有个最小精度或降噪方法,不然屏幕总是在微微晃动。感觉 4 个方向的 screen-orientation 是不麻烦的,但“360度”就会面对这个问题,不同的使用场景可能灵敏度需求还不一样,甚至需要可配置
3. 还有一点是屏幕就算是圆形的,但目前显示原理在物理上还是有横竖 2 个方向的吧 (我不懂硬件乱猜测的)
4. 所以真的适合从 screen-orientation 下手么?还是大方交给上层 js 处理 device-orientation + rotate 就好呢?

[1] http://www.w3.org/TR/orientation-event/
[2] http://dev.w3.org/csswg/css-transforms/#funcdef-rotate

以上

赵锦江

2015年3月27日 上午07:42,"Kang-Hao (Kenny) Lu(吕康豪)" <lvkanghao@genomics.cn> 写道:

昨天兴趣小组电话会议 Bobby 提到了很有意思的《CSS 圆角屏幕》[1]提案,用来处
理屏幕是圆的或是有圆角的。

但是比起 CSS 的问题,其实对于圆形屏幕我反而比较在意锁屏的问题。对于完全
圆形而不是圆角方形的屏幕,感觉一个比较有趣的地方是他可以显示 360 度上任
何一个角度,而不只是方形的 0、90、180、270 四个角度。

普及一下 [Screen Orientation] 规范[2],在他的模型里面的 “锁屏” 意思是让
屏幕的显示角度限制在某个角度 **集合** 里,比如说 lock("portrait") 是竖的
两个角度或是一个(取决于系统允许不允许正反两边翻),lock("protrait-
primary") 是一个竖的角度。另外,有一个特殊的值 "any",是指 0、90、180、
270 四个角度。请注意这里提 “集合” 的重要性。然后他说解锁的意思是

unlock() = lock(<default-orientation>)

,其中 <default-orientation> 也是系统决定,虽然我们都知道这里大部分系统
上都是 <default-orientation> = "any"。


圆形屏幕上应该怎么办呢?这里分成四个问题容易思考一点:

1. 圆形屏幕上的 <default-orientation> 到底该是四个角度还是 360 度全部?

这个既然规范已经说是系统决定了,剩下就是喜好问题了。貌似 Apple Watch 没
有圆形屏幕,只有圆角的,可惜了,不能作为参考。

2. 假设在某圆形显示上 <default-orientation> 是所有角度,需要有一个值代表
四个角度(例:"four-sides")么?

如果 <default-orientation> 是所有角度,代表这个手表每转一点显示就跟着重
力动或是什么的,有一个值 "four-sides" 可能有帮助阅读,不会滑来滑去的?

3. 假设在某圆形显示上 <default-orientation> 是四个角度,需要有一个值代表
所有角度么(例:"360")么?

就可以 lock("360") 让画面跟随重力转动。虽然这个操作比较像是 “解锁” 不是
“锁屏”,可能 API 使用上感觉比较奇怪。或许变成 unlock("360") 比较好,最后
变成 lock/unlock 在吃一个参数的时候,是同一个函数。

4. "any" 在圆形显示上到底该指四个角度还是 360 度?

我是觉得干脆应该在现在的规范直接把这个值重新命名成 "four-sides" 之类的,
以免造成以后这里的问题,或是现在先那掉 "any" 算了,反正在大多数系统
<default-orientation> = "any" 的情况下,lock("any") 也没必要存在(因为跟
unlock() 一样),况且也跟 lock("360") 一样感觉很奇怪。

有比较好的 API 设计么?


CSS 那边我反而没什么想法了,除了觉得[1] 'device-radius' 对于圆形显示需要
'device-radius < 50%' 什么的很麻烦,还不如 'device-shape: circle',不过
Apple Watch 也没圆形屏幕,只有圆角的,或许想多了。不过话说回来,如果圆角
比圆形常见很多,极坐标 'polar-*' 的新元素定位提案也没什么用了吧?

'border-boundary' 这种要多花时间想想,暂时没什么时间了。

之前 CSSWG 讨论这个规范的记录在[3],有兴趣的可以看看。

[1] http://dev.w3.org/csswg/css-round-display/
[2] https://w3c.github.io/screen-orientation/
[3] https://lists.w3.org/Archives/Public/www-style/2015Mar/0313


以上

吕康豪
--
Software Engineer, Shenzhen, BGI

Received on Friday, 27 March 2015 01:14:31 UTC