From 11b8f2dcb23bc076a8e6f939de458d001f79eeeb Mon Sep 17 00:00:00 2001 From: Tobrun Date: Tue, 1 Aug 2017 08:54:16 +0200 Subject: [android] - move ZoomButtonController creation to view initalisation (#9587) --- .../java/com/mapbox/mapboxsdk/maps/MapView.java | 9 ++++----- .../mapboxsdk/maps/MapZoomButtonController.java | 23 ++++++++++++---------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java index 848a898f94..766e2a051d 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java @@ -120,6 +120,7 @@ public class MapView extends FrameLayout { myLocationView = (MyLocationView) view.findViewById(R.id.userLocationView); attrView = (ImageView) view.findViewById(R.id.attributionView); logoView = (ImageView) view.findViewById(R.id.logoView); + mapZoomButtonController = new MapZoomButtonController(new ZoomButtonsController(this)); // add accessibility support setContentDescription(context.getString(R.string.mapbox_mapActionDescription)); @@ -180,7 +181,7 @@ public class MapView extends FrameLayout { mapKeyListener = new MapKeyListener(transform, trackingSettings, uiSettings); MapZoomControllerListener zoomListener = new MapZoomControllerListener(mapGestureDetector, uiSettings, transform); - mapZoomButtonController = new MapZoomButtonController(this, uiSettings, zoomListener); + mapZoomButtonController.bind(uiSettings, zoomListener); // inject widgets with MapboxMap compassView.setMapboxMap(mapboxMap); @@ -557,9 +558,7 @@ public class MapView extends FrameLayout { @CallSuper protected void onDetachedFromWindow() { super.onDetachedFromWindow(); - if (mapZoomButtonController != null) { - mapZoomButtonController.setVisible(false); - } + mapZoomButtonController.setVisible(false); } // Called when view is hidden and shown @@ -569,7 +568,7 @@ public class MapView extends FrameLayout { return; } - if (mapZoomButtonController != null && nativeMapView != null) { + if (nativeMapView != null) { mapZoomButtonController.setVisible(visibility == View.VISIBLE); } } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapZoomButtonController.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapZoomButtonController.java index 16513904c5..018c8eb5bb 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapZoomButtonController.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapZoomButtonController.java @@ -1,7 +1,6 @@ package com.mapbox.mapboxsdk.maps; import android.support.annotation.NonNull; -import android.view.View; import android.widget.ZoomButtonsController; import com.mapbox.mapboxsdk.constants.MapboxConstants; @@ -12,21 +11,25 @@ import com.mapbox.mapboxsdk.constants.MapboxConstants; * Allows single touch only devices to zoom in and out. *

*/ -final class MapZoomButtonController extends ZoomButtonsController { +final class MapZoomButtonController { private UiSettings uiSettings; + private ZoomButtonsController zoomButtonsController; - MapZoomButtonController(@NonNull View ownerView, @NonNull UiSettings uiSettings, @NonNull OnZoomListener listener) { - super(ownerView); + MapZoomButtonController(@NonNull ZoomButtonsController zoomButtonsController) { + this.zoomButtonsController = zoomButtonsController; + this.zoomButtonsController.setZoomSpeed(MapboxConstants.ANIMATION_DURATION); + } + + void bind(UiSettings uiSettings, ZoomButtonsController.OnZoomListener onZoomListener) { this.uiSettings = uiSettings; - setZoomSpeed(MapboxConstants.ANIMATION_DURATION); - setOnZoomListener(listener); + zoomButtonsController.setOnZoomListener(onZoomListener); } - @Override - public void setVisible(boolean visible) { - if (uiSettings.isZoomControlsEnabled()) { - super.setVisible(visible); + void setVisible(boolean visible) { + if (uiSettings != null && !uiSettings.isZoomControlsEnabled()) { + return; } + zoomButtonsController.setVisible(visible); } } -- cgit v1.2.1