[android] Keep CompassView's state up to date when compass is enabled. (#15606)
* [android] Keep CompassView's state up to date when compass is enabled. * [android] Add unit test for updating compass view. * [android] Add change log.
This commit is contained in:
@@ -417,10 +417,6 @@ public final class UiSettings {
|
||||
}
|
||||
|
||||
void update(@NonNull CameraPosition cameraPosition) {
|
||||
if (!isCompassEnabled()) {
|
||||
return;
|
||||
}
|
||||
|
||||
double clockwiseBearing = -cameraPosition.bearing;
|
||||
compassView.update(clockwiseBearing);
|
||||
}
|
||||
@@ -1073,6 +1069,7 @@ public final class UiSettings {
|
||||
*/
|
||||
public void invalidate() {
|
||||
setLogoMargins(getLogoMarginLeft(), getLogoMarginTop(), getLogoMarginRight(), getLogoMarginBottom());
|
||||
setCompassEnabled(isCompassEnabled());
|
||||
setCompassMargins(getCompassMarginLeft(), getCompassMarginTop(), getCompassMarginRight(), getCompassMarginBottom());
|
||||
setAttributionMargins(getAttributionMarginLeft(), getAttributionMarginTop(), getAttributionMarginRight(),
|
||||
getAttributionMarginBottom());
|
||||
|
||||
@@ -91,6 +91,7 @@ public final class CompassView extends ImageView implements Runnable {
|
||||
resetAnimation();
|
||||
setAlpha(1.0f);
|
||||
setVisibility(View.VISIBLE);
|
||||
update(rotation);
|
||||
} else {
|
||||
resetAnimation();
|
||||
setAlpha(0.0f);
|
||||
|
||||
@@ -5,6 +5,7 @@ import android.view.View;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import com.mapbox.mapboxsdk.camera.CameraPosition;
|
||||
import com.mapbox.mapboxsdk.maps.widgets.CompassView;
|
||||
|
||||
import org.junit.Before;
|
||||
@@ -17,6 +18,7 @@ import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
public class UiSettingsTest {
|
||||
|
||||
@@ -412,4 +414,20 @@ public class UiSettingsTest {
|
||||
assertEquals("Zoom rate should be 0.83f", 0.83f,
|
||||
uiSettings.getZoomRate(), 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateWhenCompassViewNotHidden() {
|
||||
CameraPosition cameraPosition = new CameraPosition.Builder(CameraPosition.DEFAULT).bearing(24.0f).build();
|
||||
when(compassView.isHidden()).thenReturn(false);
|
||||
uiSettings.update(cameraPosition);
|
||||
verify(compassView).update(-24.0f);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateWhenCompassViewHidden() {
|
||||
CameraPosition cameraPosition = new CameraPosition.Builder(CameraPosition.DEFAULT).bearing(24.0f).build();
|
||||
when(compassView.isHidden()).thenReturn(true);
|
||||
uiSettings.update(cameraPosition);
|
||||
verify(compassView).update(-24.0f);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user