From 7d6ac6adfc2c898ba65d05d25c06693ce5eedd20 Mon Sep 17 00:00:00 2001 From: Tobrun Date: Mon, 15 Feb 2016 12:00:51 +0100 Subject: [PATCH] [android] #3943 #3775 #3885 - added sample feature activity + espresso test --- .../DynamicMarkerChangeActivityTest.java | 33 ++++ .../mapboxsdk/testapp/utils/ViewUtils.java | 15 ++ .../src/main/AndroidManifest.xml | 19 ++- .../testapp/DynamicMarkerChangeActivity.java | 145 ++++++++++++++++++ .../mapboxsdk/testapp/MainActivity.java | 6 +- .../main/res/drawable-xxhdpi/ic_arsenal.png | Bin 0 -> 1178 bytes .../main/res/drawable-xxhdpi/ic_chelsea.png | Bin 0 -> 1692 bytes .../main/res/drawable/ic_dynamic_marker.xml | 9 ++ .../res/layout/activity_dynamic_marker.xml | 45 ++++++ .../src/main/res/menu/menu_drawer.xml | 6 + .../src/main/res/values/strings.xml | 2 + 11 files changed, 272 insertions(+), 8 deletions(-) create mode 100644 platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/DynamicMarkerChangeActivityTest.java create mode 100644 platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/utils/ViewUtils.java create mode 100644 platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/DynamicMarkerChangeActivity.java create mode 100644 platform/android/MapboxGLAndroidSDKTestApp/src/main/res/drawable-xxhdpi/ic_arsenal.png create mode 100644 platform/android/MapboxGLAndroidSDKTestApp/src/main/res/drawable-xxhdpi/ic_chelsea.png create mode 100644 platform/android/MapboxGLAndroidSDKTestApp/src/main/res/drawable/ic_dynamic_marker.xml create mode 100644 platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_dynamic_marker.xml diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/DynamicMarkerChangeActivityTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/DynamicMarkerChangeActivityTest.java new file mode 100644 index 000000000..b6feb8f1b --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/DynamicMarkerChangeActivityTest.java @@ -0,0 +1,33 @@ +package com.mapbox.mapboxsdk.testapp; + +import android.support.test.rule.ActivityTestRule; +import android.support.test.runner.AndroidJUnit4; +import android.test.suitebuilder.annotation.LargeTest; + +import com.mapbox.mapboxsdk.testapp.utils.ViewUtils; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; + +/** + * Tests on DynamicMarkerChange + */ +@RunWith(AndroidJUnit4.class) +@LargeTest +public class DynamicMarkerChangeActivityTest extends BaseTest { + + @Rule + public ActivityTestRule mActivityRule = new ActivityTestRule<>( + DynamicMarkerChangeActivity.class); + + @Test + public void testSanity() { + checkViewIsDisplayed(R.id.mapView); + } + + @Test + public void testFabClick() { + ViewUtils.clickView(R.id.fab); + } +} diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/utils/ViewUtils.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/utils/ViewUtils.java new file mode 100644 index 000000000..01ee3e9b9 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/utils/ViewUtils.java @@ -0,0 +1,15 @@ +package com.mapbox.mapboxsdk.testapp.utils; + +import android.support.annotation.IdRes; + +import static android.support.test.espresso.Espresso.onView; +import static android.support.test.espresso.action.ViewActions.click; +import static android.support.test.espresso.matcher.ViewMatchers.withId; + +public class ViewUtils { + + public static void clickView(@IdRes int viewRes) { + onView(withId(viewRes)) + .perform(click()); + } +} diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml index 18ab9c4c0..7b4af726c 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml @@ -5,8 +5,8 @@ - - + + + - + - + - + diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/DynamicMarkerChangeActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/DynamicMarkerChangeActivity.java new file mode 100644 index 000000000..605e7b81a --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/DynamicMarkerChangeActivity.java @@ -0,0 +1,145 @@ +package com.mapbox.mapboxsdk.testapp; + +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.design.widget.FloatingActionButton; +import android.support.v4.content.ContextCompat; +import android.support.v7.app.ActionBar; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; +import android.view.MenuItem; +import android.view.View; + +import com.mapbox.mapboxsdk.annotations.IconFactory; +import com.mapbox.mapboxsdk.annotations.Marker; +import com.mapbox.mapboxsdk.annotations.MarkerOptions; +import com.mapbox.mapboxsdk.constants.Style; +import com.mapbox.mapboxsdk.geometry.LatLng; +import com.mapbox.mapboxsdk.maps.CameraUpdateFactory; +import com.mapbox.mapboxsdk.maps.MapView; +import com.mapbox.mapboxsdk.maps.MapboxMap; +import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; +import com.mapbox.mapboxsdk.utils.ApiAccess; + +public class DynamicMarkerChangeActivity extends AppCompatActivity { + + private static final LatLng LAT_LNG_CHELSEA = new LatLng(51.481670, -0.190849); + private static final LatLng LAT_LNG_ARSENAL = new LatLng(51.555062, -0.108417); + + private MapView mMapView; + private MapboxMap mMapboxMap; + private IconFactory mIconFactory; + private Marker mMarker; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_dynamic_marker); + + Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); + setSupportActionBar(toolbar); + + ActionBar actionBar = getSupportActionBar(); + if (actionBar != null) { + actionBar.setDisplayHomeAsUpEnabled(true); + actionBar.setDisplayShowHomeEnabled(true); + } + + mIconFactory = IconFactory.getInstance(this); + + mMapView = (MapView) findViewById(R.id.mapView); + mMapView.setTag(true); + mMapView.setAccessToken(ApiAccess.getToken(this)); + mMapView.onCreate(savedInstanceState); + mMapView.getMapAsync(new OnMapReadyCallback() { + @Override + public void onMapReady(@NonNull MapboxMap mapboxMap) { + mMapboxMap = mapboxMap; + mapboxMap.setStyle(Style.MAPBOX_STREETS); + mapboxMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(51.506675, -0.128699), 10)); + + // Create marker + MarkerOptions markerOptions = new MarkerOptions() + .position(LAT_LNG_CHELSEA) + .icon(mIconFactory.fromResource(R.drawable.ic_chelsea)); + mMarker = mapboxMap.addMarker(markerOptions); + } + }); + + + FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); + fab.setColorFilter(ContextCompat.getColor(this, R.color.primary)); + fab.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (mMapboxMap != null) { + updateMarker(); + } + } + }); + } + + private void updateMarker() { + // update model + boolean first = (boolean) mMapView.getTag(); + mMapView.setTag(!first); + + // update marker + mMarker.setPosition(first ? LAT_LNG_CHELSEA : LAT_LNG_ARSENAL); + mMarker.setIcon(mIconFactory.fromResource(first ? R.drawable.ic_chelsea : R.drawable.ic_arsenal)); + } + + + @Override + protected void onStart() { + super.onStart(); + mMapView.onStart(); + } + + @Override + public void onResume() { + super.onResume(); + mMapView.onResume(); + } + + @Override + public void onPause() { + super.onPause(); + mMapView.onPause(); + } + + @Override + protected void onStop() { + super.onStop(); + mMapView.onStop(); + } + + @Override + protected void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + mMapView.onSaveInstanceState(outState); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + mMapView.onDestroy(); + } + + @Override + public void onLowMemory() { + super.onLowMemory(); + mMapView.onLowMemory(); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case android.R.id.home: + onBackPressed(); + return true; + default: + return super.onOptionsItemSelected(item); + } + } +} diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/MainActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/MainActivity.java index d1224ea76..a7b1d0270 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/MainActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/MainActivity.java @@ -463,6 +463,10 @@ public class MainActivity extends AppCompatActivity { startActivity(new Intent(getApplicationContext(), ScrollByActivity.class)); return true; + case R.id.action_dynamic_marker: + startActivity(new Intent(getApplicationContext(), DynamicMarkerChangeActivity.class)); + return true; + default: return changeMapStyle(menuItem.getItemId()); } @@ -555,7 +559,7 @@ public class MainActivity extends AppCompatActivity { if ((ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) || (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) - == PackageManager.PERMISSION_GRANTED)){ + == PackageManager.PERMISSION_GRANTED)) { mMapboxMap.setMyLocationEnabled(false); } mLocationFAB.setColorFilter(Color.TRANSPARENT); diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/drawable-xxhdpi/ic_arsenal.png b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/drawable-xxhdpi/ic_arsenal.png new file mode 100644 index 0000000000000000000000000000000000000000..6fdac4ef09f4e8eca63b6fcf49dd7a8558d506e9 GIT binary patch literal 1178 zcmV;L1ZDe)P)WFU8GbZ8()Nlj2>E@cM*00aI>L_t(&-qo5*ZxdG( z$N%>=b}){k(1ao$O_a83)g(=M1Y(>ANx-p_5H;H_`Z2mG8@AnaSyfd(K^Lf%s!D92 zc@Z9o5ahwDtpu$E3PM3NM&p^e-Nd90WBcCg8HkTGnuYIN-`_d^b7twBXgLA-f0qL4Kg%BiuzY3aYFuH!@+izh1_`NXzC6Oq= zC_t&v1gzszo5?Hn*&J4g>>Db#3)$-d=6eE z0A&n3*=v41ayh{BUdwLZ3Q#x-mS_NL@2ENvtC10vwq4o#CFRo#YM47kl_b>%X*dss zRPcU@Xo&P^Af=Es?g8)aF$B~Zg}KjHrKx7wm8g_X_*3&1}72)wmT zqkI;7oB(h%q97D=O&LJvF6lmb4DbHE*P%4>Ky-G2>^~R`fCL~ELyApL`)y90`B`|b zs}Y6Dl2z&pvCb~A{Rh;y3u|kjU5EXv)1!x=@3kmbBm0N%%2!5}&Rq1XuMz#?%eT_^ zS)a^8`p8jPLXr?I`2=m1?gJCx3}lI}Aq{$q7mAFU_ktho_HFN!1dx#k#J~`Cij{I^ zNdVD52pWs+7yvPxhU8rRPHc_nwN31)%gF!wv(D}Ub?455?o!*t(?kP!PYUkTB?W-k zZg9U8y0r*Nt3=V@vBFYnco(E@sPFohv+^in(z!2oN zb@>8VV-s2vd#lU9^L1^2{FP~~@iZ2L7(878pm{IY@uZ$7Z!Q`oruX1JynkQlRim?$ z3f1i;!m zwf4OL;N^1g{&-*v;21>DI{Udl!2f?x_TZfrkit7QlL#09@U{>1c4V*KN^U-Xn7$MV s!zgOp)Iau+JM*I!S|pEJ10e+e0qnLW4Kg8Kd;kCd07*qoM6N<$f-9~OMgRZ+ literal 0 HcmV?d00001 diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/drawable-xxhdpi/ic_chelsea.png b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/drawable-xxhdpi/ic_chelsea.png new file mode 100644 index 0000000000000000000000000000000000000000..6cd376b2812ce926eea1da39f696390e824a25d7 GIT binary patch literal 1692 zcmV;N24ne&P)WFU8GbZ8()Nlj2>E@cM*00sa_L_t(&-ql%aOjBnV ze$Hv3trQ9cBR4^1D1uIzqETcbGQ>F(Gc|}C&N$<;i$Bmg3~?8yMq+mPG2P}RbB@Ky zqRSw0-a;fJh%yub#S74aN^9j5dINgeo}T?cvPlb^uL70#Pm`YWz2EbE@AqC0CCWI+ zV+;sI_5Skx(9#$~!n-+YdMtwn0P%2bAoZcKAU+IfiIJEV8Hiwo3?Tthgeas?`b*Ji zW})rq!sCu^Xgj*`&wU+AuBf5y=zhMd^*lZx^`WtGSv=lcGzAOe!yuKApGReb7JpW# z@bkqx(3@D#2~gC)W^w`UE5eo)3D~jr6@&%*4T}ZM-8Ou4x&{Y|Zh&<-$q4j$_+WRf zPtp@3aUw4r6N3Ck~+LOD2BEG4}L)KYf@scZB3$AV!uKz!HG}OF__Wm!N5>waH0C4@LDJ@YYu3dEaEh43`qLu zcWgcQH!AP^2Oa=AEiAq-xrG^BiNF+JQF#;| z*L-;n?xVQy!*KC|aKiGKG4|jQWATWalsXR&pUAm-!GWuoJX@qe7t5Ox9Q{{Cr<50(z5`NI{TXGPVhX2g_e9 z0*tALNI`sb5acqk*9f@m{IJ~uyMq&4%+WNB`Ej8rt$9Se`IN8#Y|NMrmDY%6jS;HH zCTN&0q68=IKhWx7IaJ-#Avqyju#&9QSdR!~%!xw&`nk{iXJs8w>r7B-jA+)Hpwb$j z5;URZvB_oVCGH!i{GUWwZ5t7R^-HE==dmm3AdFzi31Ke(NhM-Tk5XcKl+xwdnerxN z?Y-bSR_UKf%Wk$20g+0?DA>G^XpPceg3P2SqBZWU?6#q)Y|z4BA&W+vGUKr^BTks# zP{5JgB?$5-tGh1W6iC2ocj8bm6{8o0QV%fu+!m5Ei!WCMeyHUk>l z46cQ@c-cYTT`?9MAc4B@9gLIu5ED^rjW~SvHZEO%fYv8wh-eB^!W76%ipB>kXJCBb zIAWcj9>0qHr>+Yp007^UBbsI0I=_5HQGFER)$lK{&m|e z_#p`}Ml06sJrBEs^BQ=gg~bNcqwCpadLUE; + + diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_dynamic_marker.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_dynamic_marker.xml new file mode 100644 index 000000000..73592448b --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_dynamic_marker.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_drawer.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_drawer.xml index b008a4f63..5b2f0f1d5 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_drawer.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_drawer.xml @@ -192,6 +192,12 @@ android:icon="@drawable/ic_input_24dp" android:title="@string/activity_scroll_by" /> + + diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/strings.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/strings.xml index 773642f29..f0b87ddbb 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/strings.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/strings.xml @@ -25,6 +25,7 @@ Geocoder Activity Double Map Activity Scroll By Activity + Dynamic Marker Activity Main Activity Controls Main Activity Styles @@ -52,6 +53,7 @@ Center map around 2 markers Remove polylines Double MapView + Dynamic Marker Move Ease