Surface Duo 上的手寫筆輸入
Android 手寫筆事件的處理方式是在 View 類別中實作 onTouchEvent
方法。 讓應用程式能以觸控方式互動的關鍵在於,擴充 View 的實作以覆寫用來接聽觸控事件的 onTouchEvent。 作為引數的 MotionEvent 會報告來自觸控螢幕的輸入詳細資料,讓使用者可以使用手寫筆與螢幕互動。
您的程式碼可以藉由查看 MotionEvent.getToolType
方法所傳回的值,來偵測出使用者正在使用手寫筆。 值為 TOOL_TYPE_STYLUS
表示手寫筆,值為 TOOL_TYPE_ERASER
則表示以橡皮擦向下的方式反握手寫筆。
表示使用者使用手寫筆時的力道。 力道通常介於 0 到 1 之間 (但不受系統限制);0 表示輕度力道,1 表示重度力道。
藉由呼叫 getPressure
方法或使用 AXIS_PRESSURE
參數呼叫 getAxisValue
,即可取得此值。
當握住的手寫筆朝向螢幕頂端,且橡皮擦部分朝向使用者時,方向值會從 0 開始。
旋轉手寫筆時,如果手寫筆朝向左側 (手寫筆尖端在橡皮擦左側),則值會是負數,朝向右側時則會是正數。
藉由呼叫 getOrientation
方法或使用 AXIS_ORIENTATION
參數呼叫 getAxisValue,即可取得此值。
下列程式碼片段會偵測手寫筆的方向,並在螢幕上繪製弧線以符合:
float orientation = ((event.getOrientation() * 57.2958f) + 90 ) % 360 ;
canvas.drawArc(oval,orientation,5.0f,true,paint);
getButtonState
方法會傳回所按下按鈕的位元遮罩,例如代表手寫筆上按鈕的 BUTTON_STYLUS_PRIMARY 和 BUTTON_STYLUS_SECONDARY。