diff options
author | Ivo van Dongen <info@ivovandongen.nl> | 2017-11-01 11:43:27 +0200 |
---|---|---|
committer | Tobrun <tobrun@mapbox.com> | 2017-11-03 09:19:39 -0700 |
commit | 8753edf08f4634a9f49020741464a6b7dc61cf2d (patch) | |
tree | 16570c9173e217dab0736b350f260ff8e304c1a3 /platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/textureview/TextureViewAnimationActivity.java | |
parent | 3b2bd7ce4f7087f51f2aeace22fe60c5c83ee1d9 (diff) | |
download | qtlocation-mapboxgl-8753edf08f4634a9f49020741464a6b7dc61cf2d.tar.gz |
[android] test app - texture view test activities
Diffstat (limited to 'platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/textureview/TextureViewAnimationActivity.java')
-rw-r--r-- | platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/textureview/TextureViewAnimationActivity.java | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/textureview/TextureViewAnimationActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/textureview/TextureViewAnimationActivity.java new file mode 100644 index 0000000000..dc95373663 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/textureview/TextureViewAnimationActivity.java @@ -0,0 +1,157 @@ +package com.mapbox.mapboxsdk.testapp.activity.textureview; + +import android.animation.ObjectAnimator; +import android.os.Bundle; +import android.os.Handler; +import android.support.v7.app.ActionBar; +import android.support.v7.app.AppCompatActivity; +import android.widget.TextView; + +import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; +import com.mapbox.mapboxsdk.geometry.LatLng; +import com.mapbox.mapboxsdk.maps.MapView; +import com.mapbox.mapboxsdk.maps.MapboxMap; +import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; +import com.mapbox.mapboxsdk.testapp.R; + +import java.util.Locale; + +/** + * Test animating a {@link android.view.TextureView} backed map. + */ +public class TextureViewAnimationActivity extends AppCompatActivity { + + private MapView mapView; + private MapboxMap mapboxMap; + private Handler handler; + private Runnable delayed; + + private static LatLng[] PLACES = { + new LatLng(37.7749, -122.4194), // SF + new LatLng(38.9072, -77.0369), // DC + new LatLng(52.3702, 4.8952), // AMS + new LatLng(60.1699, 24.9384), // HEL + new LatLng(-13.1639, -74.2236), // AYA + new LatLng(52.5200, 13.4050), // BER + new LatLng(12.9716, 77.5946), // BAN + new LatLng(31.2304, 121.4737) // SHA + }; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_textureview_animate); + handler = new Handler(getMainLooper()); + setupToolbar(); + setupMapView(savedInstanceState); + } + + private void setupToolbar() { + ActionBar actionBar = getSupportActionBar(); + if (actionBar != null) { + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + getSupportActionBar().setHomeButtonEnabled(true); + } + } + + private void setupMapView(Bundle savedInstanceState) { + mapView = (MapView) findViewById(R.id.mapView); + mapView.getMapAsync(new OnMapReadyCallback() { + @Override + public void onMapReady(MapboxMap mapboxMap) { + TextureViewAnimationActivity.this.mapboxMap = mapboxMap; + + setFpsView(mapboxMap); + + // Animate the map view + ObjectAnimator animation = ObjectAnimator.ofFloat(mapView, "rotationY", 0.0f, 360f); + animation.setDuration(3600); + animation.setRepeatCount(ObjectAnimator.INFINITE); + animation.start(); + + // Start an animation on the map as well + flyTo(mapboxMap, 0, 14); + } + }); + } + + private void flyTo(final MapboxMap mapboxMap, final int place, final double zoom) { + mapboxMap.animateCamera( + CameraUpdateFactory.newLatLngZoom(PLACES[place], zoom), + 10000, + new MapboxMap.CancelableCallback() { + @Override + public void onCancel() { + delayed = new Runnable() { + @Override + public void run() { + delayed = null; + flyTo(mapboxMap, place, zoom); + } + }; + handler.postDelayed(delayed, 2000); + } + + @Override + public void onFinish() { + flyTo(mapboxMap, place == (PLACES.length - 1) ? 0 : place + 1, zoom); + } + }); + } + + private void setFpsView(MapboxMap mapboxMap) { + final TextView fpsView = (TextView) findViewById(R.id.fpsView); + mapboxMap.setOnFpsChangedListener(new MapboxMap.OnFpsChangedListener() { + @Override + public void onFpsChanged(double fps) { + fpsView.setText(String.format(Locale.US, "FPS: %4.2f", fps)); + } + }); + } + + @Override + protected void onStart() { + super.onStart(); + mapView.onStart(); + } + + @Override + protected void onResume() { + super.onResume(); + mapView.onResume(); + } + + @Override + protected void onPause() { + super.onPause(); + mapView.onPause(); + } + + @Override + protected void onStop() { + super.onStop(); + mapView.onStop(); + if (handler != null && delayed != null) { + handler.removeCallbacks(delayed); + } + } + + @Override + protected void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + mapView.onSaveInstanceState(outState); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + mapView.onDestroy(); + } + + @Override + public void onLowMemory() { + super.onLowMemory(); + mapView.onLowMemory(); + } + +} |