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:
Sean Barbeau 2020-05-19 15:16:40 -04:00 committed by GitHub
parent d5f727f838
commit ae0de4b608
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 225 additions and 49 deletions

View File

@ -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());
}
}
}

View File

@ -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,

View File

@ -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)
}
}

View File

@ -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>

View File

@ -60,6 +60,7 @@
<activity android:name=".SplitStreetViewPanoramaAndMapDemoActivity" />
<activity android:name=".StreetViewPanoramaBasicDemoActivity" />
<activity android:name=".StreetViewPanoramaOptionsDemoActivity" />
<activity android:name=".StreetViewPanoramaEventsDemoActivity" />
</application>
</manifest>

View File

@ -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>