瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

38
瀏覽器 從非觸 螢幕到多點觸 螢幕 Kris Wang

Upload: chao-tang-wang

Post on 19-Jul-2015

111 views

Category:

Software


1 download

TRANSCRIPT

Page 1: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

瀏覽器 品產從非觸 螢幕到多點觸 螢幕碰 碰

Kris Wang

Page 2: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

使用者要如何操作瀏覽器?

Page 3: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

非觸 螢幕 唯有 碰 你

“ 操作鼠標”

Webkit

MouseMovedMousePressedMouseReleased

Page 4: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

有了“多點”觸 螢幕後碰

Page 5: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

Webkit

MouseMovedMousePressedMouseReleased

scroll

zoom

More??

“ 手勢”才是王道

Page 6: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

對網頁 容而言內 ,

鼠標跟手勢有差別嗎 ?

Page 7: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

iOS Safari Android Chrome

Behavior Touch event Mouse Event Behavior Touch event Mouse Event

[Gesture] TapUp touchend mouseup [Gesture] TapUp touchend mouseup

[Gesture] TapDown touchstart mousedown [Gesture] TapDown touchstart mousedown

[Gesture] DoubleTap NA NA [Gesture] DoubleTap NA NA

[Gesture] Scroll Begin touchstart NA [Gesture] PanBegin touchstart NA

[Gesture] Scroll Move touchmove NA [Gesture] PanMove touchmove NA

[Gesture] Scroll End touchend NA [Gesture] PanEnd touchend NA

[Gesture] ZoomBegin touchstart NA [Gesture] ZoomBegin touchstart NA

[Gesture] ZoomMove touchmove NA [Gesture] ZoomMove touchmove NA

[Gesture] ZoomEnd touchend NA [Gesture] ZoomEnd touchend NA

Page 8: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

所以 , 手勢的功能做完

多點觸 品碰產 就出貨了

萬歲 !!

Page 9: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

But

我來面試時 , 老 告訴我闆

目前這個案子只有一個問題

Page 10: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

Page 11: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

畫面捲動 : 慢

畫面縮放 : 慢

反正就是 慢

Page 12: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

對於這種症頭

我的經驗有三支箭可用

Page 13: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

1. 給硬體賴

2. 吃偷 步

3. 空間換時間

Page 14: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

關於縮放 , 偉大的 iPhone讓我們知道

畫面更新跟不上手指動作 , 就是慢

Page 15: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

老實的工程師只要縮放比例有變化 , 都通知

Webkit

Page 16: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

不老實的工程師原始畫面當成畫面截圖

直接縮放截圖後貼到螢幕 (偷吃步 )

停止縮放再報縮放比例給 Webkit

Page 17: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

延伸問題Scrollbar 應該一起縮放嗎 ?

Page 18: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

我知道很醜

所以我做了 浮動式 scroll bar

Page 19: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

所以針對畫面縮放

QA 單位要測什麼 ??

Page 20: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

關於捲動 , 偉大的 iPhone讓我們知道

如果 容移動跟不上我的手指內

那就是慢

Page 21: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

( 先 給賴 Driver)

如果畫面捲動更新在20fps 情況下就很順

那 Driver 10ms 就報一個scroll event 是報心酸的 ??

Page 22: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

所以捲動時 Driver 少報幾個點吧

! (偷吃步 )

還是 擔心有什麼影響你 嗎 ?(問我問我 )

Page 23: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

然而

我們的 Render 無法達到 20fps啊

Page 24: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

所以

我們用了一招 :

Tiled Backing Store

Page 25: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

把大於可視範圍的畫面用數塊 tile 備份起來

畫面更新時 , 只要把 tile 貼上去就好了(空間換時間 )

Page 26: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕
Page 27: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

有幾個情況

Tiled Backing Store 還是救不了

Page 28: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

1. Fixed Position Element

Page 29: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

如果

畫面捲動時 ,tile不刷新 ,等到停止捲動再刷新 tile

(是的 ,又是偷吃步 )

Page 30: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

2. Sub-frame/iframe

Page 31: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

不過 , 我修好了

Frameset Flattening

Page 32: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

3. Overflow Div

Page 33: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

所以最近有空 , 我在做

Accelerated Compositing

Page 34: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕
Page 35: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

所以

把 Div 展開 , 獨立放在一層

(空間換時間 )

應該可以 定搞 吧

Page 36: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

關於捲動 , 偉大的 iPhone還讓我們知道 (US patent US7469381)

如果手指停了就立刻不捲動

使用者還是會 說 慢

Page 37: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

好吧 , 慣性捲動也要記得做

Page 38: 瀏覽器產品 - 從非觸碰螢幕到多點觸碰螢幕

所以針對畫面捲動

QA 要測什麼 ??