在 Android 中有內建 ScaleGestureDetector 可以讓我們省下自己實作縮放手勢的功能。我們要先在原先的 MultitouchListener
中建立一個 ScaleGestureDetector
,並且也把事件都傳給它。
scaleListener 是用來收 onScale 事件用的。我們可以在這個函式中收到改變後的縮放比例,然後決定怎麼利用這個縮放值來做應用。下面可以看到,scaleFactor 會用來記錄 onScale 來的比例。
完成 ScaleGestureDetector
實作後,還要針對原先的 MultitouchListener
的 onTouch
函式做適點的修改:
將 scaleFactor 先初始化成 1.0
這裡使用到的 isValidSwipe()
需要加入對於縮放的判斷 (85行)。而在 isScaling()
中,則是多了另一個 threshold 來避免小幅度的移動,造成縮放的誤判。
以上,就完成了對於縮放手勢的區別。
至於,關於多指手勢的功能設定,也都是利用 Android 原生的 preference xml 完成的,就不展開解釋了,大家可以看看下面完成後的畫面。
以我自己來說,我習慣將多指手勢操作定義如下: