mirror of
https://github.com/SimpleMobileTools/Simple-Keyboard.git
synced 2025-04-24 23:18:48 +02:00
removing some swiping related code
This commit is contained in:
parent
4bfb6042cf
commit
c51a131585
@ -145,9 +145,6 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
|||||||
private var mInvalidatedKey: MyKeyboard.Key? = null
|
private var mInvalidatedKey: MyKeyboard.Key? = null
|
||||||
private val mClipRegion = Rect(0, 0, 0, 0)
|
private val mClipRegion = Rect(0, 0, 0, 0)
|
||||||
private var mPossiblePoly = false
|
private var mPossiblePoly = false
|
||||||
private val mSwipeTracker: SwipeTracker = SwipeTracker()
|
|
||||||
private val mSwipeThreshold: Int
|
|
||||||
private val mDisambiguateSwipe: Boolean
|
|
||||||
private var mIsLongPressingSpace = false
|
private var mIsLongPressingSpace = false
|
||||||
private var mLastSpaceMoveX = 0
|
private var mLastSpaceMoveX = 0
|
||||||
private var mPopupMaxMoveDistance = 0f
|
private var mPopupMaxMoveDistance = 0f
|
||||||
@ -265,8 +262,6 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
|||||||
mPaint.alpha = 255
|
mPaint.alpha = 255
|
||||||
mPadding = Rect(0, 0, 0, 0)
|
mPadding = Rect(0, 0, 0, 0)
|
||||||
mMiniKeyboardCache = HashMap()
|
mMiniKeyboardCache = HashMap()
|
||||||
mSwipeThreshold = (500 * resources.displayMetrics.density).toInt()
|
|
||||||
mDisambiguateSwipe = false//resources.getBoolean(R.bool.config_swipeDisambiguation)
|
|
||||||
mAccessibilityManager = (context.getSystemService(Context.ACCESSIBILITY_SERVICE) as AccessibilityManager)
|
mAccessibilityManager = (context.getSystemService(Context.ACCESSIBILITY_SERVICE) as AccessibilityManager)
|
||||||
mPopupMaxMoveDistance = resources.getDimension(R.dimen.popup_max_move_distance)
|
mPopupMaxMoveDistance = resources.getDimension(R.dimen.popup_max_move_distance)
|
||||||
mTopSmallNumberSize = resources.getDimension(R.dimen.small_text_size)
|
mTopSmallNumberSize = resources.getDimension(R.dimen.small_text_size)
|
||||||
@ -347,9 +342,8 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
|||||||
* @return true if the shift key state changed, false if there was no change
|
* @return true if the shift key state changed, false if there was no change
|
||||||
* @see KeyboardView.isShifted
|
* @see KeyboardView.isShifted
|
||||||
*/
|
*/
|
||||||
fun setShifted(shiftState: Int) {
|
private fun setShifted(shiftState: Int) {
|
||||||
if (mKeyboard?.setShifted(shiftState) == true) {
|
if (mKeyboard?.setShifted(shiftState) == true) {
|
||||||
// The whole keyboard probably needs to be redrawn
|
|
||||||
invalidateAllKeys()
|
invalidateAllKeys()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -360,15 +354,11 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
|||||||
* no shift key on the keyboard or there is no keyboard attached, it returns false.
|
* no shift key on the keyboard or there is no keyboard attached, it returns false.
|
||||||
* @see KeyboardView.setShifted
|
* @see KeyboardView.setShifted
|
||||||
*/
|
*/
|
||||||
fun isShifted(): Boolean {
|
private fun isShifted(): Boolean {
|
||||||
return mKeyboard?.shiftState ?: SHIFT_OFF > SHIFT_OFF
|
return mKeyboard?.shiftState ?: SHIFT_OFF > SHIFT_OFF
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setPopupParent(v: View) {
|
private fun setPopupOffset(x: Int, y: Int) {
|
||||||
mPopupParent = v
|
|
||||||
}
|
|
||||||
|
|
||||||
fun setPopupOffset(x: Int, y: Int) {
|
|
||||||
mMiniKeyboardOffsetX = x
|
mMiniKeyboardOffsetX = x
|
||||||
mMiniKeyboardOffsetY = y
|
mMiniKeyboardOffsetY = y
|
||||||
if (mPreviewPopup.isShowing) {
|
if (mPreviewPopup.isShowing) {
|
||||||
@ -439,6 +429,7 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
|||||||
canvas.drawBitmap(mBuffer!!, 0f, 0f, null)
|
canvas.drawBitmap(mBuffer!!, 0f, 0f, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressLint("UseCompatLoadingForDrawables")
|
||||||
private fun onBufferDraw() {
|
private fun onBufferDraw() {
|
||||||
if (mBuffer == null || mKeyboardChanged) {
|
if (mBuffer == null || mKeyboardChanged) {
|
||||||
if (mBuffer == null || mKeyboardChanged && (mBuffer!!.width != width || mBuffer!!.height != height)) {
|
if (mBuffer == null || mKeyboardChanged && (mBuffer!!.width != width || mBuffer!!.height != height)) {
|
||||||
@ -599,7 +590,7 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
|||||||
|
|
||||||
for (i in 0 until keyCount) {
|
for (i in 0 until keyCount) {
|
||||||
val key = keys[nearestKeyIndices[i]]
|
val key = keys[nearestKeyIndices[i]]
|
||||||
var dist = 0
|
val dist = 0
|
||||||
val isInside = key.isInside(x, y)
|
val isInside = key.isInside(x, y)
|
||||||
if (isInside) {
|
if (isInside) {
|
||||||
primaryIndex = nearestKeyIndices[i]
|
primaryIndex = nearestKeyIndices[i]
|
||||||
@ -651,7 +642,6 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
|||||||
val key = mKeys[index]
|
val key = mKeys[index]
|
||||||
if (key.text == null) {
|
if (key.text == null) {
|
||||||
var code = key.codes[0]
|
var code = key.codes[0]
|
||||||
// TextEntryState.keyPressedAt(key, x, y);
|
|
||||||
val codes = IntArray(MAX_NEARBY_KEYS)
|
val codes = IntArray(MAX_NEARBY_KEYS)
|
||||||
Arrays.fill(codes, NOT_A_KEY)
|
Arrays.fill(codes, NOT_A_KEY)
|
||||||
getKeyIndices(x, y, codes)
|
getKeyIndices(x, y, codes)
|
||||||
@ -961,7 +951,7 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
|||||||
}
|
}
|
||||||
|
|
||||||
mMiniKeyboard!!.setKeyboard(keyboard)
|
mMiniKeyboard!!.setKeyboard(keyboard)
|
||||||
mMiniKeyboard!!.setPopupParent(this)
|
mPopupParent = this
|
||||||
mMiniKeyboardContainer!!.measure(
|
mMiniKeyboardContainer!!.measure(
|
||||||
MeasureSpec.makeMeasureSpec(width, MeasureSpec.AT_MOST),
|
MeasureSpec.makeMeasureSpec(width, MeasureSpec.AT_MOST),
|
||||||
MeasureSpec.makeMeasureSpec(height, MeasureSpec.AT_MOST)
|
MeasureSpec.makeMeasureSpec(height, MeasureSpec.AT_MOST)
|
||||||
@ -1133,13 +1123,6 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
|||||||
val keyIndex = getKeyIndices(touchX, touchY, null)
|
val keyIndex = getKeyIndices(touchX, touchY, null)
|
||||||
mPossiblePoly = possiblePoly
|
mPossiblePoly = possiblePoly
|
||||||
|
|
||||||
// Track the last few movements to look for spurious swipes.
|
|
||||||
if (action == MotionEvent.ACTION_DOWN) {
|
|
||||||
mSwipeTracker.clear()
|
|
||||||
}
|
|
||||||
|
|
||||||
mSwipeTracker.addMovement(me)
|
|
||||||
|
|
||||||
// Ignore all motion events until a DOWN.
|
// Ignore all motion events until a DOWN.
|
||||||
if (mAbortKey && action != MotionEvent.ACTION_DOWN && action != MotionEvent.ACTION_CANCEL) {
|
if (mAbortKey && action != MotionEvent.ACTION_DOWN && action != MotionEvent.ACTION_CANCEL) {
|
||||||
return true
|
return true
|
||||||
@ -1367,123 +1350,4 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
|||||||
resetMultiTap()
|
resetMultiTap()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class SwipeTracker {
|
|
||||||
companion object {
|
|
||||||
const val NUM_PAST = 4
|
|
||||||
const val LONGEST_PAST_TIME = 200
|
|
||||||
}
|
|
||||||
|
|
||||||
val mPastX = FloatArray(NUM_PAST)
|
|
||||||
val mPastY = FloatArray(NUM_PAST)
|
|
||||||
val mPastTime = LongArray(NUM_PAST)
|
|
||||||
var yVelocity = 0f
|
|
||||||
var xVelocity = 0f
|
|
||||||
|
|
||||||
fun clear() {
|
|
||||||
mPastTime[0] = 0
|
|
||||||
}
|
|
||||||
|
|
||||||
fun addMovement(ev: MotionEvent) {
|
|
||||||
val time = ev.eventTime
|
|
||||||
val N = ev.historySize
|
|
||||||
for (i in 0 until N) {
|
|
||||||
addPoint(ev.getHistoricalX(i), ev.getHistoricalY(i), ev.getHistoricalEventTime(i))
|
|
||||||
}
|
|
||||||
addPoint(ev.x, ev.y, time)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun addPoint(x: Float, y: Float, time: Long) {
|
|
||||||
var drop = -1
|
|
||||||
val pastTime = mPastTime
|
|
||||||
var i = 0
|
|
||||||
while (i < NUM_PAST) {
|
|
||||||
if (pastTime[i] == 0L) {
|
|
||||||
break
|
|
||||||
} else if (pastTime[i] < time - LONGEST_PAST_TIME) {
|
|
||||||
drop = i
|
|
||||||
}
|
|
||||||
i++
|
|
||||||
}
|
|
||||||
|
|
||||||
if (i == NUM_PAST && drop < 0) {
|
|
||||||
drop = 0
|
|
||||||
}
|
|
||||||
|
|
||||||
if (drop == i) {
|
|
||||||
drop--
|
|
||||||
}
|
|
||||||
|
|
||||||
val pastX = mPastX
|
|
||||||
val pastY = mPastY
|
|
||||||
if (drop >= 0) {
|
|
||||||
val start = drop + 1
|
|
||||||
val count = NUM_PAST - drop - 1
|
|
||||||
System.arraycopy(pastX, start, pastX, 0, count)
|
|
||||||
System.arraycopy(pastY, start, pastY, 0, count)
|
|
||||||
System.arraycopy(pastTime, start, pastTime, 0, count)
|
|
||||||
i -= drop + 1
|
|
||||||
}
|
|
||||||
|
|
||||||
pastX[i] = x
|
|
||||||
pastY[i] = y
|
|
||||||
pastTime[i] = time
|
|
||||||
i++
|
|
||||||
|
|
||||||
if (i < NUM_PAST) {
|
|
||||||
pastTime[i] = 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@JvmOverloads
|
|
||||||
fun computeCurrentVelocity(units: Int, maxVelocity: Float = Float.MAX_VALUE) {
|
|
||||||
val pastX = mPastX
|
|
||||||
val pastY = mPastY
|
|
||||||
val pastTime = mPastTime
|
|
||||||
val oldestX = pastX[0]
|
|
||||||
val oldestY = pastY[0]
|
|
||||||
val oldestTime = pastTime[0]
|
|
||||||
var accumX = 0f
|
|
||||||
var accumY = 0f
|
|
||||||
var N = 0
|
|
||||||
while (N < NUM_PAST) {
|
|
||||||
if (pastTime[N] == 0L) {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
N++
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i in 1 until N) {
|
|
||||||
val dur = (pastTime[i] - oldestTime).toInt()
|
|
||||||
if (dur == 0) continue
|
|
||||||
var dist = pastX[i] - oldestX
|
|
||||||
var vel = dist / dur * units // pixels/frame.
|
|
||||||
accumX = if (accumX == 0f) {
|
|
||||||
vel
|
|
||||||
} else {
|
|
||||||
(accumX + vel) * .5f
|
|
||||||
}
|
|
||||||
|
|
||||||
dist = pastY[i] - oldestY
|
|
||||||
vel = dist / dur * units // pixels/frame.
|
|
||||||
accumY = if (accumY == 0f) {
|
|
||||||
vel
|
|
||||||
} else {
|
|
||||||
(accumY + vel) * .5f
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
xVelocity = if (accumX < 0.0f) {
|
|
||||||
Math.max(accumX, -maxVelocity)
|
|
||||||
} else {
|
|
||||||
Math.min(accumX, maxVelocity)
|
|
||||||
}
|
|
||||||
|
|
||||||
yVelocity = if (accumY < 0.0f) {
|
|
||||||
Math.max(accumY, -maxVelocity)
|
|
||||||
} else {
|
|
||||||
Math.min(accumY, maxVelocity)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user