[android] - move ZoomButtonController creation to view initalisation (#9587)

This commit is contained in:
Tobrun
2017-08-01 08:54:16 +02:00
committed by GitHub
parent 685b8b2c84
commit 11b8f2dcb2
2 changed files with 18 additions and 16 deletions

View File

@@ -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);
}
}

View File

@@ -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.
* </p>
*/
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);
this.uiSettings = uiSettings;
setZoomSpeed(MapboxConstants.ANIMATION_DURATION);
setOnZoomListener(listener);
MapZoomButtonController(@NonNull ZoomButtonsController zoomButtonsController) {
this.zoomButtonsController = zoomButtonsController;
this.zoomButtonsController.setZoomSpeed(MapboxConstants.ANIMATION_DURATION);
}
@Override
public void setVisible(boolean visible) {
if (uiSettings.isZoomControlsEnabled()) {
super.setVisible(visible);
void bind(UiSettings uiSettings, ZoomButtonsController.OnZoomListener onZoomListener) {
this.uiSettings = uiSettings;
zoomButtonsController.setOnZoomListener(onZoomListener);
}
void setVisible(boolean visible) {
if (uiSettings != null && !uiSettings.isZoomControlsEnabled()) {
return;
}
zoomButtonsController.setVisible(visible);
}
}