У меня есть два вопроса прямо сейчас:
1) Использование приведенного ниже кода прекрасно работает, чтобы показать, где происходит сенсорное событие от пользователя на экране, однако всякий раз, когда нажимается только кнопка «Авто», этоотправляет событие движения внутри вида кнопки с размерами (X: 300, Y: 300), что технически правильно!Однако я хочу, чтобы он отправлял событие движения за пределы размеров вида кнопки.
2) Каждый раз, когда нажимается кнопка «Авто», она появляется только для быстрой отправки последовательности событий, которая выглядит как дважды, а затемНа кнопку невозможно нажать снова, если приложение не закрыто и не перезапущено.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) { //On creation of the activity this code runs
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main);
editText.isFocusable = false
editText.isFocusableInTouchMode = false
editText2.isFocusable = false
editText2.isFocusableInTouchMode = false
}
private var isTouch = false
@SuppressLint("SetTextI18n")
override fun onTouchEvent(event: MotionEvent): Boolean {
val X = event.x.toInt()
val Y = event.y.toInt()
val eventaction = event.action
editText.setText("X: $X")
editText2.setText("Y: $Y")
return true
}
fun button (view: View) {
Toast.makeText(this, "AutoClicked", Toast.LENGTH_SHORT).show()
}
fun auto (view: View) {
// Obtain MotionEvent object
val downTime = SystemClock.uptimeMillis()
val eventTime = SystemClock.uptimeMillis() + 100
val x = 300.0f
val y = 300.0f
// List of meta states found here: developer.android.com/reference/android/view/KeyEvent.html#getMetaState()
val metaState = 0
val motionEvent = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_DOWN, x, y, metaState)
val motionEvent2 = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_UP, x, y, metaState)
// Dispatch touch event to view
view.dispatchTouchEvent(motionEvent)
view.dispatchTouchEvent(motionEvent2)
}
}
Я разместил код выше и картинку с кратким описанием того, что происходит на рисунке, связанном ниже.
Результаты отправленного события касания
Я видел идеи о том, как создать макет, на который ссылается это событие движения, но мне кажется, что для этой реализации мне не имеет смыслакода, который у меня сейчас есть.