Skip to content

Commit ae0de4b

Browse files
authored
chore: Add StreetViewPanoramaEventsDemoActivity in Kotlin (googlemaps-samples#207)
Also apply following changes to Java version: * Refactor variables to remove Hungarian notation * Use lambda (requires Java 8 support) * Support Java 8 features (for all Java demos) via build.gradle
1 parent d5f727f commit ae0de4b

File tree

6 files changed

+226
-50
lines changed

6 files changed

+226
-50
lines changed

ApiDemos/java/app/src/gms/java/com/example/mapdemo/StreetViewPanoramaEventsDemoActivity.java

Lines changed: 46 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,12 @@
1515

1616
package com.example.mapdemo;
1717

18-
import com.google.android.gms.maps.OnStreetViewPanoramaReadyCallback;
18+
import android.graphics.Point;
19+
import android.os.Bundle;
20+
import android.widget.TextView;
21+
22+
import androidx.appcompat.app.AppCompatActivity;
23+
1924
import com.google.android.gms.maps.StreetViewPanorama;
2025
import com.google.android.gms.maps.StreetViewPanorama.OnStreetViewPanoramaCameraChangeListener;
2126
import com.google.android.gms.maps.StreetViewPanorama.OnStreetViewPanoramaChangeListener;
@@ -27,12 +32,6 @@
2732
import com.google.android.gms.maps.model.StreetViewPanoramaLocation;
2833
import com.google.android.gms.maps.model.StreetViewPanoramaOrientation;
2934

30-
import android.graphics.Point;
31-
import android.os.Bundle;
32-
import android.widget.TextView;
33-
34-
import androidx.appcompat.app.AppCompatActivity;
35-
3635
/**
3736
* This shows how to listen to some {@link StreetViewPanorama} events.
3837
*/
@@ -43,94 +42,91 @@ public class StreetViewPanoramaEventsDemoActivity extends AppCompatActivity
4342
// George St, Sydney
4443
private static final LatLng SYDNEY = new LatLng(-33.87365, 151.20689);
4544

46-
private StreetViewPanorama mStreetViewPanorama;
45+
private StreetViewPanorama streetViewPanorama;
4746

48-
private TextView mPanoChangeTimesTextView;
47+
private TextView panoChangeTimesTextView;
4948

50-
private TextView mPanoCameraChangeTextView;
49+
private TextView panoCameraChangeTextView;
5150

52-
private TextView mPanoClickTextView;
51+
private TextView panoClickTextView;
5352

54-
private TextView mPanoLongClickTextView;
53+
private TextView panoLongClickTextView;
5554

56-
private int mPanoChangeTimes = 0;
55+
private int panoChangeTimes = 0;
5756

58-
private int mPanoCameraChangeTimes = 0;
57+
private int panoCameraChangeTimes = 0;
5958

60-
private int mPanoClickTimes = 0;
59+
private int panoClickTimes = 0;
6160

62-
private int mPanoLongClickTimes = 0;
61+
private int panoLongClickTimes = 0;
6362

6463
@Override
6564
protected void onCreate(final Bundle savedInstanceState) {
6665
super.onCreate(savedInstanceState);
6766
setContentView(R.layout.street_view_panorama_events_demo);
6867

69-
mPanoChangeTimesTextView = (TextView) findViewById(R.id.change_pano);
70-
mPanoCameraChangeTextView = (TextView) findViewById(R.id.change_camera);
71-
mPanoClickTextView = (TextView) findViewById(R.id.click_pano);
72-
mPanoLongClickTextView = (TextView) findViewById(R.id.long_click_pano);
68+
panoChangeTimesTextView = findViewById(R.id.change_pano);
69+
panoCameraChangeTextView = findViewById(R.id.change_camera);
70+
panoClickTextView = findViewById(R.id.click_pano);
71+
panoLongClickTextView = findViewById(R.id.long_click_pano);
7372

7473
SupportStreetViewPanoramaFragment streetViewPanoramaFragment =
7574
(SupportStreetViewPanoramaFragment)
7675
getSupportFragmentManager().findFragmentById(R.id.streetviewpanorama);
7776
streetViewPanoramaFragment.getStreetViewPanoramaAsync(
78-
new OnStreetViewPanoramaReadyCallback() {
79-
@Override
80-
public void onStreetViewPanoramaReady(StreetViewPanorama panorama) {
81-
mStreetViewPanorama = panorama;
82-
mStreetViewPanorama.setOnStreetViewPanoramaChangeListener(
83-
StreetViewPanoramaEventsDemoActivity.this);
84-
mStreetViewPanorama.setOnStreetViewPanoramaCameraChangeListener(
85-
StreetViewPanoramaEventsDemoActivity.this);
86-
mStreetViewPanorama.setOnStreetViewPanoramaClickListener(
87-
StreetViewPanoramaEventsDemoActivity.this);
88-
mStreetViewPanorama.setOnStreetViewPanoramaLongClickListener(
89-
StreetViewPanoramaEventsDemoActivity.this);
90-
91-
// Only set the panorama to SYDNEY on startup (when no panoramas have been
92-
// loaded which is when the savedInstanceState is null).
93-
if (savedInstanceState == null) {
94-
mStreetViewPanorama.setPosition(SYDNEY);
95-
}
77+
panorama -> {
78+
streetViewPanorama = panorama;
79+
streetViewPanorama.setOnStreetViewPanoramaChangeListener(
80+
StreetViewPanoramaEventsDemoActivity.this);
81+
streetViewPanorama.setOnStreetViewPanoramaCameraChangeListener(
82+
StreetViewPanoramaEventsDemoActivity.this);
83+
streetViewPanorama.setOnStreetViewPanoramaClickListener(
84+
StreetViewPanoramaEventsDemoActivity.this);
85+
streetViewPanorama.setOnStreetViewPanoramaLongClickListener(
86+
StreetViewPanoramaEventsDemoActivity.this);
87+
88+
// Only set the panorama to SYDNEY on startup (when no panoramas have been
89+
// loaded which is when the savedInstanceState is null).
90+
if (savedInstanceState == null) {
91+
streetViewPanorama.setPosition(SYDNEY);
9692
}
9793
});
9894
}
9995

10096
@Override
10197
public void onStreetViewPanoramaChange(StreetViewPanoramaLocation location) {
10298
if (location != null) {
103-
mPanoChangeTimesTextView.setText("Times panorama changed=" + ++mPanoChangeTimes);
99+
panoChangeTimesTextView.setText("Times panorama changed=" + ++panoChangeTimes);
104100
}
105101
}
106102

107103
@Override
108104
public void onStreetViewPanoramaCameraChange(StreetViewPanoramaCamera camera) {
109-
mPanoCameraChangeTextView.setText("Times camera changed=" + ++mPanoCameraChangeTimes);
105+
panoCameraChangeTextView.setText("Times camera changed=" + ++panoCameraChangeTimes);
110106
}
111107

112108
@Override
113109
public void onStreetViewPanoramaClick(StreetViewPanoramaOrientation orientation) {
114-
Point point = mStreetViewPanorama.orientationToPoint(orientation);
110+
Point point = streetViewPanorama.orientationToPoint(orientation);
115111
if (point != null) {
116-
mPanoClickTimes++;
117-
mPanoClickTextView.setText(
118-
"Times clicked=" + mPanoClickTimes + " : " + point.toString());
119-
mStreetViewPanorama.animateTo(
112+
panoClickTimes++;
113+
panoClickTextView.setText(
114+
"Times clicked=" + panoClickTimes + " : " + point.toString());
115+
streetViewPanorama.animateTo(
120116
new StreetViewPanoramaCamera.Builder()
121117
.orientation(orientation)
122-
.zoom(mStreetViewPanorama.getPanoramaCamera().zoom)
118+
.zoom(streetViewPanorama.getPanoramaCamera().zoom)
123119
.build(), 1000);
124120
}
125121
}
126122

127123
@Override
128124
public void onStreetViewPanoramaLongClick(StreetViewPanoramaOrientation orientation) {
129-
Point point = mStreetViewPanorama.orientationToPoint(orientation);
125+
Point point = streetViewPanorama.orientationToPoint(orientation);
130126
if (point != null) {
131-
mPanoLongClickTimes++;
132-
mPanoLongClickTextView.setText(
133-
"Times long clicked=" + mPanoLongClickTimes + " : " + point.toString());
127+
panoLongClickTimes++;
128+
panoLongClickTextView.setText(
129+
"Times long clicked=" + panoLongClickTimes + " : " + point.toString());
134130
}
135131
}
136132
}

ApiDemos/kotlin/app/src/gms/java/com/example/kotlindemos/DemoDetailsList.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,10 @@ class DemoDetailsList {
5757
R.string.street_view_panorama_options_demo_label,
5858
R.string.street_view_panorama_options_demo_details,
5959
StreetViewPanoramaOptionsDemoActivity::class.java),
60+
DemoDetails(
61+
R.string.street_view_panorama_events_demo_label,
62+
R.string.street_view_panorama_events_demo_details,
63+
StreetViewPanoramaEventsDemoActivity::class.java),
6064
DemoDetails(R.string.tags_demo_label, R.string.tags_demo_details,
6165
TagsDemoActivity::class.java),
6266
DemoDetails(R.string.ui_settings_demo_label, R.string.ui_settings_demo_details,
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
// Copyright 2020 Google LLC
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
package com.example.kotlindemos
15+
16+
import android.os.Bundle
17+
import android.widget.TextView
18+
import androidx.appcompat.app.AppCompatActivity
19+
import com.google.android.gms.maps.StreetViewPanorama
20+
import com.google.android.gms.maps.StreetViewPanorama.*
21+
import com.google.android.gms.maps.SupportStreetViewPanoramaFragment
22+
import com.google.android.gms.maps.model.LatLng
23+
import com.google.android.gms.maps.model.StreetViewPanoramaCamera
24+
import com.google.android.gms.maps.model.StreetViewPanoramaLocation
25+
import com.google.android.gms.maps.model.StreetViewPanoramaOrientation
26+
27+
/**
28+
* This shows how to listen to some [StreetViewPanorama] events.
29+
*/
30+
class StreetViewPanoramaEventsDemoActivity : AppCompatActivity(),
31+
OnStreetViewPanoramaChangeListener, OnStreetViewPanoramaCameraChangeListener,
32+
OnStreetViewPanoramaClickListener, OnStreetViewPanoramaLongClickListener {
33+
34+
private lateinit var streetViewPanorama: StreetViewPanorama
35+
private lateinit var panoChangeTimesTextView: TextView
36+
private lateinit var panoCameraChangeTextView: TextView
37+
private lateinit var panoClickTextView: TextView
38+
private lateinit var panoLongClickTextView: TextView
39+
40+
private var panoChangeTimes = 0
41+
private var panoCameraChangeTimes = 0
42+
private var panoClickTimes = 0
43+
private var panoLongClickTimes = 0
44+
45+
override fun onCreate(savedInstanceState: Bundle?) {
46+
super.onCreate(savedInstanceState)
47+
setContentView(R.layout.street_view_panorama_events_demo)
48+
49+
panoChangeTimesTextView = findViewById(R.id.change_pano)
50+
panoCameraChangeTextView = findViewById(R.id.change_camera)
51+
panoClickTextView = findViewById(R.id.click_pano)
52+
panoLongClickTextView = findViewById(R.id.long_click_pano)
53+
54+
val streetViewPanoramaFragment =
55+
supportFragmentManager.findFragmentById(R.id.streetviewpanorama) as SupportStreetViewPanoramaFragment?
56+
streetViewPanoramaFragment?.getStreetViewPanoramaAsync { panorama: StreetViewPanorama ->
57+
streetViewPanorama = panorama
58+
streetViewPanorama.setOnStreetViewPanoramaChangeListener(
59+
this@StreetViewPanoramaEventsDemoActivity
60+
)
61+
streetViewPanorama.setOnStreetViewPanoramaCameraChangeListener(
62+
this@StreetViewPanoramaEventsDemoActivity
63+
)
64+
streetViewPanorama.setOnStreetViewPanoramaClickListener(
65+
this@StreetViewPanoramaEventsDemoActivity
66+
)
67+
streetViewPanorama.setOnStreetViewPanoramaLongClickListener(
68+
this@StreetViewPanoramaEventsDemoActivity
69+
)
70+
71+
// Only set the panorama to SYDNEY on startup (when no panoramas have been
72+
// loaded which is when the savedInstanceState is null).
73+
savedInstanceState ?: streetViewPanorama.setPosition(SYDNEY)
74+
}
75+
}
76+
77+
override fun onStreetViewPanoramaChange(location: StreetViewPanoramaLocation) {
78+
panoChangeTimesTextView.text = "Times panorama changed=" + ++panoChangeTimes
79+
}
80+
81+
override fun onStreetViewPanoramaCameraChange(camera: StreetViewPanoramaCamera) {
82+
panoCameraChangeTextView.text = "Times camera changed=" + ++panoCameraChangeTimes
83+
}
84+
85+
override fun onStreetViewPanoramaClick(orientation: StreetViewPanoramaOrientation) {
86+
val point = streetViewPanorama.orientationToPoint(orientation)
87+
point?.let {
88+
panoClickTimes++
89+
panoClickTextView.text = "Times clicked=$panoClickTimes : $point"
90+
streetViewPanorama.animateTo(
91+
StreetViewPanoramaCamera.Builder()
92+
.orientation(orientation)
93+
.zoom(streetViewPanorama.panoramaCamera.zoom)
94+
.build(), 1000
95+
)
96+
}
97+
}
98+
99+
override fun onStreetViewPanoramaLongClick(orientation: StreetViewPanoramaOrientation) {
100+
val point = streetViewPanorama.orientationToPoint(orientation)
101+
if (point != null) {
102+
panoLongClickTimes++
103+
panoLongClickTextView.text = "Times long clicked=$panoLongClickTimes : $point"
104+
}
105+
}
106+
107+
companion object {
108+
// George St, Sydney
109+
private val SYDNEY = LatLng(-33.87365, 151.20689)
110+
}
111+
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
<?xml version="1.0" encoding="utf-8"?><!--
2+
Copyright (C) 2012 The Android Open Source Project
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
-->
16+
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
17+
android:layout_width="match_parent"
18+
android:layout_height="match_parent">
19+
20+
<fragment
21+
android:id="@+id/streetviewpanorama"
22+
android:layout_width="match_parent"
23+
android:layout_height="match_parent"
24+
class="com.google.android.gms.maps.SupportStreetViewPanoramaFragment" />
25+
26+
<LinearLayout
27+
android:layout_width="match_parent"
28+
android:layout_height="wrap_content"
29+
android:background="@color/white"
30+
android:orientation="vertical">
31+
32+
<TextView
33+
android:id="@+id/change_pano"
34+
android:text="@string/navigate_to_another_panorama"
35+
android:layout_width="match_parent"
36+
android:layout_height="wrap_content" />
37+
38+
<TextView
39+
android:id="@+id/change_camera"
40+
android:text="@string/pan_camera"
41+
android:layout_width="match_parent"
42+
android:layout_height="wrap_content" />
43+
44+
<TextView
45+
android:id="@+id/click_pano"
46+
android:text="@string/tap_screen"
47+
android:layout_width="match_parent"
48+
android:layout_height="wrap_content" />
49+
50+
<TextView
51+
android:id="@+id/long_click_pano"
52+
android:text="@string/long_press_screen"
53+
android:layout_width="match_parent"
54+
android:layout_height="wrap_content" />
55+
</LinearLayout>
56+
</FrameLayout>

ApiDemos/kotlin/app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
<activity android:name=".SplitStreetViewPanoramaAndMapDemoActivity" />
6161
<activity android:name=".StreetViewPanoramaBasicDemoActivity" />
6262
<activity android:name=".StreetViewPanoramaOptionsDemoActivity" />
63+
<activity android:name=".StreetViewPanoramaEventsDemoActivity" />
6364
</application>
6465

6566
</manifest>

ApiDemos/kotlin/app/src/main/res/values/strings.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,14 @@
160160
<string name="panning">Panning Gestures</string>
161161
<string name="streetnames">Streetnames</string>
162162

163+
<!-- StreetView Events Demo -->
164+
<string name="street_view_panorama_events_demo_label">Street View Panorama Events</string>
165+
<string name="street_view_panorama_events_demo_details">Standard Street View Panorama with event handling.</string>
166+
<string name="navigate_to_another_panorama">navigate to another panorama</string>
167+
<string name="pan_camera">pan camera</string>
168+
<string name="tap_screen">tap screen</string>
169+
<string name="long_press_screen">long press screen</string>
170+
163171
<!-- Tags Demo -->
164172
<string name="tags_demo_label">Tags</string>
165173
<string name="tags_demo_details">Demonstrates how to get and set tags on API objects.</string>

0 commit comments

Comments
 (0)