Возможно, "скрыть" OverlayItem в Android?

Я работаю над приложением MapView и хочу поместить в программу милое маленькое пасхальное яйцо. То, что я пытаюсь сделать, это иметь оверлейный элемент, который в основном невидим, но при касании вызовет событие для отображения представления.

Теперь на iPhone я выполнил это с помощью setHidden:true для аннотации, которую я не хотел видеть... аннотация все еще была там и была кликабельной, но вы не могли ее увидеть.

Я пытаюсь найти какой-то эквивалентный метод на overlayItem в Android, но ничего не нашел. Является ли мой единственный вариант принять это, чтобы найти / создать прозрачное изображение и добавить его в качестве наложения в mapView? Я могу сделать это, если придется, но есть ли другие варианты? А если нет, может ли кто-нибудь указать мне на относительно небольшое прозрачное изображение?

3 ответа

Решение

Я обнаружил, что самым простым решением было просто использовать невидимый объект рисования и добавить его в качестве оверлейного элемента, так что это то, что я сделал, и он работает, как и ожидалось.

Я знаю, что вы нашли способ скрыть свое наложение, но есть более элегантный способ сделать это. Создайте собственный класс наложения:

public class MapOverlay extends Overlay{

    private Boolean visible;

    public MapOverlay(){
        this.visible = true;
    }   

    public void draw(Canvas canvas, MapView mapv, boolean shadow){
        super.draw(canvas, mapv, shadow);

        if (visible) {
            // draw what you want
        }
    }

    public Boolean isVisible() {
        return visible;
    }

    public void isVisible(Boolean visible) {
        this.visible = visible;
    }

    public void toggleVisible() {
        this.visible = !visible;
    }
}

Затем в своей деятельности добавьте оверлеи как обычно:

mapView.getOverlays().addOverlay(new MapOverlay());

Позже, если вы хотите показать / скрыть оверлей, просто позвоните:

mapView.getOverlays().get(0).toggleVisible();

или же:

mapView.getOverlays().get(0).isVisible(false);

Надеюсь, поможет.

Вы можете сделать интерактивный просмотр изображения (соответственно установить ширину / высоту и цвет должен быть прозрачным) в верхней части вида карты, который при нажатии вызывает пасхальное яйцо. Однако это может быть трудно правильно расположить.

Кроме того, я могу представить себе использование пользовательского представления, в котором вы переопределяете функцию onTouch, чтобы вызвать пасхальное яйцо, если координаты x,y находятся внутри блока... и в противном случае он обрабатывается представлением карты. Но это звучит так, как будто это может быть много работы для пасхального яйца..

Другие вопросы по тегам