自分でカスタマイズしたキーボードを作成しました。カスタムキーボードのタッチイベント
私が&をクリックすると、指の動きに合わせてキーが強調表示されます。私が指を持ち上げると、対応する手紙がEditText
に印刷されなければなりません。
どうすればいいですか?
自分でカスタマイズしたキーボードを作成しました。カスタムキーボードのタッチイベント
私が&をクリックすると、指の動きに合わせてキーが強調表示されます。私が指を持ち上げると、対応する手紙がEditText
に印刷されなければなりません。
どうすればいいですか?
「カスタマイズされた」キーボードをキャンバスに描画すると仮定します。明らかに、組み込みのキーボードを使う方が良いです。しかし、あなたが本当にこれをやりたければ、ここでは解決策です。
キーボードの各文字を描画します。描画する際に各キーに対応する配列にx、yの位置を格納します。
//initialise
int[] letterX = new int[29];
int[] letterY = new int[29];
char[] keyboardChar = {'Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M',' ', '<','#'};
どこか「引く」メソッドで:onTouchEventで
// first keyboard row (do this for each row moving adding to y for next row
x=10; y=50; keySpacing = 30; // starting x, y position
for (int charIndex = 0; charIndex < 10; charIndex++) {
letterX[charIndex] = x;
letterY[charIndex] = y;
textWidth = mPaint.measureText(keyboardChar, charIndex, 1);
if (!letterHit) {
canvas.drawText(keyboardChar, charIndex, 1, x - (textWidth/2), y, mPaint);
} else {
// this key is being pressed so draw highlighted somehow
canvas.drawText(keyboardChar, charIndex, 1, x - (textWidth/2), y,mPaint);
}
x += keySpacing;
}
、letterX、letterYのあなたの配列に、X、Yのタッチ位置を比較し、キーが押されている場合、これはあなたを教えてくれます。配列インデックスは、それがどの文字かを示します。押されている場合はハイライトされたキーを印刷するためにdrawメソッドにコードが必要です(例:16pxの許容値を想定しています)。
for (int j=0; j < 29; j++) {
if ((Math.abs(touchX - letterX[j]) < 16) && (Math.abs(touchY - letterY[j]) < 16) && !keyboardLock) {
letterHit = j;
}
}
さらにロジックを(削除などのために)追加する必要があります。文字列を維持する必要があります。だから可能ならばシステムキーボードを使うのが最善です。
this postのようなものが必要だと思います。
あなたはカスタマイズされたキーボードの手段をとっていますか? –