2017-07-21 5 views
-1

私はタブレット用のAndroid 5.1アプリケーションを作成していますが、MotionEventオブジェクトの助けを借りてタッチとスタイラスの入力を区別できます。Androidでタッチを無効にする(スタイラスのみ許可)

タッチ入力のみ許可することができます(つまり、タッチしても効果はありません)。

+0

この[リンク](http://lapasa.net/knowledge/?p=490)あなたを助けるかもしれません。 – huk

+0

@huk私はタッチとスタイラスを区別することができます。私がしたいのは、スタイラスだけを許可することです。 – machinery

答えて

2

良い方法はありませんが、カスタムビューを作成してレイアウトの最上部に配置することができます(全幅と高さで全体のアールをカバーするようにします)。ビューのみの仕事は、フィルタリングしたいすべてのモーションイベント(スタイラスからのものではない)を処理済みとしてマークして入力を処理し「消費」し、他のすべてのイベントを無視することで、フレームワークをビュー階層他のビューによる定期的な処理。

EDIT

最も単純な実装では、あなたのビューは次のように、シンプルな既存のものを、拡張させることであろう。 FrameLayoutまたはSpace(すべての測定項目を煩わせる必要はありません)、すべての入力をフィルタリングするにはonTouchEvent()を上書きします。あなたが渡したくないものがある場合は、trueを返してここで「消費」してください。それ以外の場合はfalseを返して伝播します。 そして重要なのは、あなたのビューが最上位には他のすべてをオーバーレイするために作るために、すなわち

FrameLayout 
    YourCustomView 
    PreviousLayout 
+0

ありがとうございました。あなたのアプローチを明確にするための例を挙げることができますか? – machinery

+0

これはかなり簡単ですが、編集された回答を参照してください –

関連する問題