mirror of
https://github.com/googlemaps/android-samples.git
synced 2025-12-08 18:02:20 +00:00
chore: Add StreetViewPanoramaEventsDemoActivity in Kotlin (#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
This commit is contained in:
parent
d5f727f838
commit
ae0de4b608
@ -15,7 +15,12 @@
|
||||
|
||||
package com.example.mapdemo;
|
||||
|
||||
import com.google.android.gms.maps.OnStreetViewPanoramaReadyCallback;
|
||||
import android.graphics.Point;
|
||||
import android.os.Bundle;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import com.google.android.gms.maps.StreetViewPanorama;
|
||||
import com.google.android.gms.maps.StreetViewPanorama.OnStreetViewPanoramaCameraChangeListener;
|
||||
import com.google.android.gms.maps.StreetViewPanorama.OnStreetViewPanoramaChangeListener;
|
||||
@ -27,12 +32,6 @@ import com.google.android.gms.maps.model.StreetViewPanoramaCamera;
|
||||
import com.google.android.gms.maps.model.StreetViewPanoramaLocation;
|
||||
import com.google.android.gms.maps.model.StreetViewPanoramaOrientation;
|
||||
|
||||
import android.graphics.Point;
|
||||
import android.os.Bundle;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
/**
|
||||
* This shows how to listen to some {@link StreetViewPanorama} events.
|
||||
*/
|
||||
@ -43,56 +42,53 @@ public class StreetViewPanoramaEventsDemoActivity extends AppCompatActivity
|
||||
// George St, Sydney
|
||||
private static final LatLng SYDNEY = new LatLng(-33.87365, 151.20689);
|
||||
|
||||
private StreetViewPanorama mStreetViewPanorama;
|
||||
private StreetViewPanorama streetViewPanorama;
|
||||
|
||||
private TextView mPanoChangeTimesTextView;
|
||||
private TextView panoChangeTimesTextView;
|
||||
|
||||
private TextView mPanoCameraChangeTextView;
|
||||
private TextView panoCameraChangeTextView;
|
||||
|
||||
private TextView mPanoClickTextView;
|
||||
private TextView panoClickTextView;
|
||||
|
||||
private TextView mPanoLongClickTextView;
|
||||
private TextView panoLongClickTextView;
|
||||
|
||||
private int mPanoChangeTimes = 0;
|
||||
private int panoChangeTimes = 0;
|
||||
|
||||
private int mPanoCameraChangeTimes = 0;
|
||||
private int panoCameraChangeTimes = 0;
|
||||
|
||||
private int mPanoClickTimes = 0;
|
||||
private int panoClickTimes = 0;
|
||||
|
||||
private int mPanoLongClickTimes = 0;
|
||||
private int panoLongClickTimes = 0;
|
||||
|
||||
@Override
|
||||
protected void onCreate(final Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.street_view_panorama_events_demo);
|
||||
|
||||
mPanoChangeTimesTextView = (TextView) findViewById(R.id.change_pano);
|
||||
mPanoCameraChangeTextView = (TextView) findViewById(R.id.change_camera);
|
||||
mPanoClickTextView = (TextView) findViewById(R.id.click_pano);
|
||||
mPanoLongClickTextView = (TextView) findViewById(R.id.long_click_pano);
|
||||
panoChangeTimesTextView = findViewById(R.id.change_pano);
|
||||
panoCameraChangeTextView = findViewById(R.id.change_camera);
|
||||
panoClickTextView = findViewById(R.id.click_pano);
|
||||
panoLongClickTextView = findViewById(R.id.long_click_pano);
|
||||
|
||||
SupportStreetViewPanoramaFragment streetViewPanoramaFragment =
|
||||
(SupportStreetViewPanoramaFragment)
|
||||
getSupportFragmentManager().findFragmentById(R.id.streetviewpanorama);
|
||||
streetViewPanoramaFragment.getStreetViewPanoramaAsync(
|
||||
new OnStreetViewPanoramaReadyCallback() {
|
||||
@Override
|
||||
public void onStreetViewPanoramaReady(StreetViewPanorama panorama) {
|
||||
mStreetViewPanorama = panorama;
|
||||
mStreetViewPanorama.setOnStreetViewPanoramaChangeListener(
|
||||
StreetViewPanoramaEventsDemoActivity.this);
|
||||
mStreetViewPanorama.setOnStreetViewPanoramaCameraChangeListener(
|
||||
StreetViewPanoramaEventsDemoActivity.this);
|
||||
mStreetViewPanorama.setOnStreetViewPanoramaClickListener(
|
||||
StreetViewPanoramaEventsDemoActivity.this);
|
||||
mStreetViewPanorama.setOnStreetViewPanoramaLongClickListener(
|
||||
StreetViewPanoramaEventsDemoActivity.this);
|
||||
panorama -> {
|
||||
streetViewPanorama = panorama;
|
||||
streetViewPanorama.setOnStreetViewPanoramaChangeListener(
|
||||
StreetViewPanoramaEventsDemoActivity.this);
|
||||
streetViewPanorama.setOnStreetViewPanoramaCameraChangeListener(
|
||||
StreetViewPanoramaEventsDemoActivity.this);
|
||||
streetViewPanorama.setOnStreetViewPanoramaClickListener(
|
||||
StreetViewPanoramaEventsDemoActivity.this);
|
||||
streetViewPanorama.setOnStreetViewPanoramaLongClickListener(
|
||||
StreetViewPanoramaEventsDemoActivity.this);
|
||||
|
||||
// Only set the panorama to SYDNEY on startup (when no panoramas have been
|
||||
// loaded which is when the savedInstanceState is null).
|
||||
if (savedInstanceState == null) {
|
||||
mStreetViewPanorama.setPosition(SYDNEY);
|
||||
}
|
||||
// Only set the panorama to SYDNEY on startup (when no panoramas have been
|
||||
// loaded which is when the savedInstanceState is null).
|
||||
if (savedInstanceState == null) {
|
||||
streetViewPanorama.setPosition(SYDNEY);
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -100,37 +96,37 @@ public class StreetViewPanoramaEventsDemoActivity extends AppCompatActivity
|
||||
@Override
|
||||
public void onStreetViewPanoramaChange(StreetViewPanoramaLocation location) {
|
||||
if (location != null) {
|
||||
mPanoChangeTimesTextView.setText("Times panorama changed=" + ++mPanoChangeTimes);
|
||||
panoChangeTimesTextView.setText("Times panorama changed=" + ++panoChangeTimes);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStreetViewPanoramaCameraChange(StreetViewPanoramaCamera camera) {
|
||||
mPanoCameraChangeTextView.setText("Times camera changed=" + ++mPanoCameraChangeTimes);
|
||||
panoCameraChangeTextView.setText("Times camera changed=" + ++panoCameraChangeTimes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStreetViewPanoramaClick(StreetViewPanoramaOrientation orientation) {
|
||||
Point point = mStreetViewPanorama.orientationToPoint(orientation);
|
||||
Point point = streetViewPanorama.orientationToPoint(orientation);
|
||||
if (point != null) {
|
||||
mPanoClickTimes++;
|
||||
mPanoClickTextView.setText(
|
||||
"Times clicked=" + mPanoClickTimes + " : " + point.toString());
|
||||
mStreetViewPanorama.animateTo(
|
||||
panoClickTimes++;
|
||||
panoClickTextView.setText(
|
||||
"Times clicked=" + panoClickTimes + " : " + point.toString());
|
||||
streetViewPanorama.animateTo(
|
||||
new StreetViewPanoramaCamera.Builder()
|
||||
.orientation(orientation)
|
||||
.zoom(mStreetViewPanorama.getPanoramaCamera().zoom)
|
||||
.zoom(streetViewPanorama.getPanoramaCamera().zoom)
|
||||
.build(), 1000);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStreetViewPanoramaLongClick(StreetViewPanoramaOrientation orientation) {
|
||||
Point point = mStreetViewPanorama.orientationToPoint(orientation);
|
||||
Point point = streetViewPanorama.orientationToPoint(orientation);
|
||||
if (point != null) {
|
||||
mPanoLongClickTimes++;
|
||||
mPanoLongClickTextView.setText(
|
||||
"Times long clicked=" + mPanoLongClickTimes + " : " + point.toString());
|
||||
panoLongClickTimes++;
|
||||
panoLongClickTextView.setText(
|
||||
"Times long clicked=" + panoLongClickTimes + " : " + point.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -57,6 +57,10 @@ class DemoDetailsList {
|
||||
R.string.street_view_panorama_options_demo_label,
|
||||
R.string.street_view_panorama_options_demo_details,
|
||||
StreetViewPanoramaOptionsDemoActivity::class.java),
|
||||
DemoDetails(
|
||||
R.string.street_view_panorama_events_demo_label,
|
||||
R.string.street_view_panorama_events_demo_details,
|
||||
StreetViewPanoramaEventsDemoActivity::class.java),
|
||||
DemoDetails(R.string.tags_demo_label, R.string.tags_demo_details,
|
||||
TagsDemoActivity::class.java),
|
||||
DemoDetails(R.string.ui_settings_demo_label, R.string.ui_settings_demo_details,
|
||||
|
||||
@ -0,0 +1,111 @@
|
||||
// Copyright 2020 Google LLC
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
package com.example.kotlindemos
|
||||
|
||||
import android.os.Bundle
|
||||
import android.widget.TextView
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import com.google.android.gms.maps.StreetViewPanorama
|
||||
import com.google.android.gms.maps.StreetViewPanorama.*
|
||||
import com.google.android.gms.maps.SupportStreetViewPanoramaFragment
|
||||
import com.google.android.gms.maps.model.LatLng
|
||||
import com.google.android.gms.maps.model.StreetViewPanoramaCamera
|
||||
import com.google.android.gms.maps.model.StreetViewPanoramaLocation
|
||||
import com.google.android.gms.maps.model.StreetViewPanoramaOrientation
|
||||
|
||||
/**
|
||||
* This shows how to listen to some [StreetViewPanorama] events.
|
||||
*/
|
||||
class StreetViewPanoramaEventsDemoActivity : AppCompatActivity(),
|
||||
OnStreetViewPanoramaChangeListener, OnStreetViewPanoramaCameraChangeListener,
|
||||
OnStreetViewPanoramaClickListener, OnStreetViewPanoramaLongClickListener {
|
||||
|
||||
private lateinit var streetViewPanorama: StreetViewPanorama
|
||||
private lateinit var panoChangeTimesTextView: TextView
|
||||
private lateinit var panoCameraChangeTextView: TextView
|
||||
private lateinit var panoClickTextView: TextView
|
||||
private lateinit var panoLongClickTextView: TextView
|
||||
|
||||
private var panoChangeTimes = 0
|
||||
private var panoCameraChangeTimes = 0
|
||||
private var panoClickTimes = 0
|
||||
private var panoLongClickTimes = 0
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.street_view_panorama_events_demo)
|
||||
|
||||
panoChangeTimesTextView = findViewById(R.id.change_pano)
|
||||
panoCameraChangeTextView = findViewById(R.id.change_camera)
|
||||
panoClickTextView = findViewById(R.id.click_pano)
|
||||
panoLongClickTextView = findViewById(R.id.long_click_pano)
|
||||
|
||||
val streetViewPanoramaFragment =
|
||||
supportFragmentManager.findFragmentById(R.id.streetviewpanorama) as SupportStreetViewPanoramaFragment?
|
||||
streetViewPanoramaFragment?.getStreetViewPanoramaAsync { panorama: StreetViewPanorama ->
|
||||
streetViewPanorama = panorama
|
||||
streetViewPanorama.setOnStreetViewPanoramaChangeListener(
|
||||
this@StreetViewPanoramaEventsDemoActivity
|
||||
)
|
||||
streetViewPanorama.setOnStreetViewPanoramaCameraChangeListener(
|
||||
this@StreetViewPanoramaEventsDemoActivity
|
||||
)
|
||||
streetViewPanorama.setOnStreetViewPanoramaClickListener(
|
||||
this@StreetViewPanoramaEventsDemoActivity
|
||||
)
|
||||
streetViewPanorama.setOnStreetViewPanoramaLongClickListener(
|
||||
this@StreetViewPanoramaEventsDemoActivity
|
||||
)
|
||||
|
||||
// Only set the panorama to SYDNEY on startup (when no panoramas have been
|
||||
// loaded which is when the savedInstanceState is null).
|
||||
savedInstanceState ?: streetViewPanorama.setPosition(SYDNEY)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onStreetViewPanoramaChange(location: StreetViewPanoramaLocation) {
|
||||
panoChangeTimesTextView.text = "Times panorama changed=" + ++panoChangeTimes
|
||||
}
|
||||
|
||||
override fun onStreetViewPanoramaCameraChange(camera: StreetViewPanoramaCamera) {
|
||||
panoCameraChangeTextView.text = "Times camera changed=" + ++panoCameraChangeTimes
|
||||
}
|
||||
|
||||
override fun onStreetViewPanoramaClick(orientation: StreetViewPanoramaOrientation) {
|
||||
val point = streetViewPanorama.orientationToPoint(orientation)
|
||||
point?.let {
|
||||
panoClickTimes++
|
||||
panoClickTextView.text = "Times clicked=$panoClickTimes : $point"
|
||||
streetViewPanorama.animateTo(
|
||||
StreetViewPanoramaCamera.Builder()
|
||||
.orientation(orientation)
|
||||
.zoom(streetViewPanorama.panoramaCamera.zoom)
|
||||
.build(), 1000
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onStreetViewPanoramaLongClick(orientation: StreetViewPanoramaOrientation) {
|
||||
val point = streetViewPanorama.orientationToPoint(orientation)
|
||||
if (point != null) {
|
||||
panoLongClickTimes++
|
||||
panoLongClickTextView.text = "Times long clicked=$panoLongClickTimes : $point"
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
// George St, Sydney
|
||||
private val SYDNEY = LatLng(-33.87365, 151.20689)
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,56 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
Copyright (C) 2012 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<fragment
|
||||
android:id="@+id/streetviewpanorama"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
class="com.google.android.gms.maps.SupportStreetViewPanoramaFragment" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/white"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/change_pano"
|
||||
android:text="@string/navigate_to_another_panorama"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/change_camera"
|
||||
android:text="@string/pan_camera"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/click_pano"
|
||||
android:text="@string/tap_screen"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/long_click_pano"
|
||||
android:text="@string/long_press_screen"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
</LinearLayout>
|
||||
</FrameLayout>
|
||||
@ -60,6 +60,7 @@
|
||||
<activity android:name=".SplitStreetViewPanoramaAndMapDemoActivity" />
|
||||
<activity android:name=".StreetViewPanoramaBasicDemoActivity" />
|
||||
<activity android:name=".StreetViewPanoramaOptionsDemoActivity" />
|
||||
<activity android:name=".StreetViewPanoramaEventsDemoActivity" />
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
@ -160,6 +160,14 @@
|
||||
<string name="panning">Panning Gestures</string>
|
||||
<string name="streetnames">Streetnames</string>
|
||||
|
||||
<!-- StreetView Events Demo -->
|
||||
<string name="street_view_panorama_events_demo_label">Street View Panorama Events</string>
|
||||
<string name="street_view_panorama_events_demo_details">Standard Street View Panorama with event handling.</string>
|
||||
<string name="navigate_to_another_panorama">navigate to another panorama</string>
|
||||
<string name="pan_camera">pan camera</string>
|
||||
<string name="tap_screen">tap screen</string>
|
||||
<string name="long_press_screen">long press screen</string>
|
||||
|
||||
<!-- Tags Demo -->
|
||||
<string name="tags_demo_label">Tags</string>
|
||||
<string name="tags_demo_details">Demonstrates how to get and set tags on API objects.</string>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user