removing the Close button of the popup window
This commit is contained in:
parent
6a0aa07816
commit
284dfe2c7b
|
@ -40,7 +40,7 @@ import java.util.*
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int = R.attr.keyboardViewStyle, defStyleRes: Int = 0) :
|
class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int = R.attr.keyboardViewStyle, defStyleRes: Int = 0) :
|
||||||
View(context, attrs, defStyleAttr, defStyleRes), View.OnClickListener {
|
View(context, attrs, defStyleAttr, defStyleRes) {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Listener for virtual keyboard events.
|
* Listener for virtual keyboard events.
|
||||||
|
@ -188,6 +188,7 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
||||||
private val mSwipeTracker: SwipeTracker = SwipeTracker()
|
private val mSwipeTracker: SwipeTracker = SwipeTracker()
|
||||||
private val mSwipeThreshold: Int
|
private val mSwipeThreshold: Int
|
||||||
private val mDisambiguateSwipe: Boolean
|
private val mDisambiguateSwipe: Boolean
|
||||||
|
private var mPopupStartX = 0f
|
||||||
|
|
||||||
// Variables for dealing with multiple pointers
|
// Variables for dealing with multiple pointers
|
||||||
private var mOldPointerCount = 1
|
private var mOldPointerCount = 1
|
||||||
|
@ -448,14 +449,6 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Popup keyboard close button clicked.
|
|
||||||
* @hide
|
|
||||||
*/
|
|
||||||
override fun onClick(v: View) {
|
|
||||||
dismissPopupKeyboard()
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun adjustCase(label: CharSequence): CharSequence? {
|
private fun adjustCase(label: CharSequence): CharSequence? {
|
||||||
var newLabel: CharSequence? = label
|
var newLabel: CharSequence? = label
|
||||||
if (newLabel != null && newLabel.isNotEmpty() && mKeyboard!!.shiftState > SHIFT_OFF && newLabel.length < 3 && Character.isLowerCase(newLabel[0])) {
|
if (newLabel != null && newLabel.isNotEmpty() && mKeyboard!!.shiftState > SHIFT_OFF && newLabel.length < 3 && Character.isLowerCase(newLabel[0])) {
|
||||||
|
@ -968,8 +961,6 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
||||||
val inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
|
val inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
|
||||||
mMiniKeyboardContainer = inflater.inflate(mPopupLayout, null)
|
mMiniKeyboardContainer = inflater.inflate(mPopupLayout, null)
|
||||||
mMiniKeyboard = mMiniKeyboardContainer!!.findViewById<View>(R.id.keyboardView) as MyKeyboardView
|
mMiniKeyboard = mMiniKeyboardContainer!!.findViewById<View>(R.id.keyboardView) as MyKeyboardView
|
||||||
val closeButton = mMiniKeyboardContainer!!.findViewById<View>(R.id.closeButton)
|
|
||||||
closeButton?.setOnClickListener(this)
|
|
||||||
|
|
||||||
mMiniKeyboard!!.onKeyboardActionListener = object : OnKeyboardActionListener {
|
mMiniKeyboard!!.onKeyboardActionListener = object : OnKeyboardActionListener {
|
||||||
override fun onKey(primaryCode: Int, keyCodes: IntArray?) {
|
override fun onKey(primaryCode: Int, keyCodes: IntArray?) {
|
||||||
|
@ -983,7 +974,9 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun swipeLeft() {}
|
override fun swipeLeft() {}
|
||||||
|
|
||||||
override fun swipeRight() {}
|
override fun swipeRight() {}
|
||||||
|
|
||||||
override fun swipeUp() {}
|
override fun swipeUp() {}
|
||||||
override fun swipeDown() {}
|
override fun swipeDown() {}
|
||||||
override fun onPress(primaryCode: Int) {
|
override fun onPress(primaryCode: Int) {
|
||||||
|
@ -1053,7 +1046,7 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
||||||
// deal with the typical multi-pointer behavior of two-thumb typing
|
// deal with the typical multi-pointer behavior of two-thumb typing
|
||||||
val pointerCount = me.pointerCount
|
val pointerCount = me.pointerCount
|
||||||
val action = me.action
|
val action = me.action
|
||||||
var result = false
|
var result: Boolean
|
||||||
val now = me.eventTime
|
val now = me.eventTime
|
||||||
if (pointerCount != mOldPointerCount) {
|
if (pointerCount != mOldPointerCount) {
|
||||||
if (pointerCount == 1) {
|
if (pointerCount == 1) {
|
||||||
|
@ -1081,7 +1074,24 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
||||||
result = true
|
result = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mOldPointerCount = pointerCount
|
mOldPointerCount = pointerCount
|
||||||
|
|
||||||
|
// handle moving between alternative popup characters by swiping
|
||||||
|
if (mPopupKeyboard.isShowing) {
|
||||||
|
when (action) {
|
||||||
|
MotionEvent.ACTION_DOWN -> {
|
||||||
|
mPopupStartX = me.x
|
||||||
|
}
|
||||||
|
MotionEvent.ACTION_MOVE -> {
|
||||||
|
val diff = me.x - mPopupStartX
|
||||||
|
}
|
||||||
|
MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> {
|
||||||
|
dismissPopupKeyboard()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1186,6 +1196,7 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!continueLongPress) {
|
if (!continueLongPress) {
|
||||||
// Cancel old longpress
|
// Cancel old longpress
|
||||||
mHandler!!.removeMessages(MSG_LONGPRESS)
|
mHandler!!.removeMessages(MSG_LONGPRESS)
|
||||||
|
@ -1232,6 +1243,7 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
||||||
invalidateKey(mCurrentKey)
|
invalidateKey(mCurrentKey)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mLastX = touchX
|
mLastX = touchX
|
||||||
mLastY = touchY
|
mLastY = touchY
|
||||||
return true
|
return true
|
||||||
|
@ -1271,9 +1283,11 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun removeMessages() {
|
private fun removeMessages() {
|
||||||
mHandler?.removeMessages(MSG_REPEAT)
|
mHandler?.apply {
|
||||||
mHandler?.removeMessages(MSG_LONGPRESS)
|
removeMessages(MSG_REPEAT)
|
||||||
mHandler?.removeMessages(MSG_SHOW_PREVIEW)
|
removeMessages(MSG_LONGPRESS)
|
||||||
|
removeMessages(MSG_SHOW_PREVIEW)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override fun onDetachedFromWindow() {
|
public override fun onDetachedFromWindow() {
|
||||||
|
@ -1357,17 +1371,21 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
||||||
drop = 0
|
drop = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
if (drop == i) drop--
|
if (drop == i) {
|
||||||
|
drop--
|
||||||
|
}
|
||||||
|
|
||||||
val pastX = mPastX
|
val pastX = mPastX
|
||||||
val pastY = mPastY
|
val pastY = mPastY
|
||||||
if (drop >= 0) {
|
if (drop >= 0) {
|
||||||
val start = drop + 1
|
val start = drop + 1
|
||||||
val count: Int = NUM_PAST - drop - 1
|
val count = NUM_PAST - drop - 1
|
||||||
System.arraycopy(pastX, start, pastX, 0, count)
|
System.arraycopy(pastX, start, pastX, 0, count)
|
||||||
System.arraycopy(pastY, start, pastY, 0, count)
|
System.arraycopy(pastY, start, pastY, 0, count)
|
||||||
System.arraycopy(pastTime, start, pastTime, 0, count)
|
System.arraycopy(pastTime, start, pastTime, 0, count)
|
||||||
i -= drop + 1
|
i -= drop + 1
|
||||||
}
|
}
|
||||||
|
|
||||||
pastX[i] = x
|
pastX[i] = x
|
||||||
pastY[i] = y
|
pastY[i] = y
|
||||||
pastTime[i] = time
|
pastTime[i] = time
|
||||||
|
|
|
@ -11,13 +11,4 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@android:color/transparent" />
|
android:background="@android:color/transparent" />
|
||||||
|
|
||||||
<ImageButton
|
|
||||||
android:id="@+id/closeButton"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_gravity="center"
|
|
||||||
android:layout_marginStart="8dp"
|
|
||||||
android:background="@android:color/transparent"
|
|
||||||
android:src="@drawable/ic_cross_vector" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
Loading…
Reference in New Issue