Я хочу получить центр экрана, когда карта, наконец, перестанет двигаться после броска. Я заметил, что для этого нет стандартного события SDK. Я видел несколько методов, таких как переопределите MapView.onTouchEvent или запустите повторяющийся таймер на ACTION_UP и дождитесь окончания движения карты.
Я смотрю на переопределение MapView.draw: -
@Override
public void draw(Canvas canvas) {
super.draw(canvas);
Log.e(TAG, "draw");
center = this.getMapCenter(); //(GeoPoint)
if (centerSave != null){
if (centerSave.equals(center)){
Log.e(TAG, "map stopped moving");
// Now what goes here?????
}
}
centerSave = center;
}
Это обнаружение «броска конца» немного проще, чем другие, которые я видел, но оно, возможно, немного больше нагружает ЦП, поскольку выполняется при каждом розыгрыше.
Теперь я хочу отправить какое-то сообщение/событие в свою MapActivity о том, что карта перестала двигаться. Затем MapActivity поместит канцелярскую кнопку в центр карты.
Как отправить это сообщение?
Это не обмен сообщениями между потоками, а между двумя разными классами. Вероятно, есть простая техника, но хитрость в том, чтобы ее знать.
Спасибо за любую помощь
Питер
РЕДАКТИРОВАТЬ: я использую обработчик для отправки сообщения в поток пользовательского интерфейса. К сожалению, это не решает проблему броска (но это улучшение).
// Now what goes here????
Message m = Message.obtain();
m.what = MyApplication.HANDLE_DRAW_TO;
MyApplication.tabbedMapActivityHandler.dispatchMessage(m);