Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: Update demo app to include more examples #94

Merged
merged 18 commits into from
Jun 6, 2022
Merged

Conversation

barbeau
Copy link
Contributor

@barbeau barbeau commented Apr 12, 2022

This PR is a work-in-progress to update the demo app to include more examples.

It now includes a new main activity with buttons for each example - the previous example is now "Basic Map Activity":

image

It also adds an example for using the map in a column to troubleshoot and serve as documentation for #78, and this "Scrolling Map Activity" currently looks like this:

image

TODO:

  • Add unit test for scrolling
  • Refactor name to "Map in Column Activity"?
  • Merge main branch changes

Before submitting your PR, there are a few things you can do to make sure it goes smoothly:

  • Make sure to open a GitHub issue as a bug/feature request before writing your code! That way we can discuss the change, evaluate designs, and agree on the general idea
  • Ensure the tests and linter pass
  • Code coverage does not decrease (if any source code was changed)
  • Appropriate docs were updated (if necessary)

@arriolac
Copy link
Member

Nice! #24 is also somewhat related

@barbeau
Copy link
Contributor Author

barbeau commented Apr 14, 2022

@arriolac Thanks for pointing out #24! I agree, it would be nice to further split the existing example. I'll probably do that in a separate PR just to separate the changes more cleanly.

Spoiler alert - this still doesn't work. You can scroll list by dragging other items before touch map fine, and when you touch map it moves as expected, but then if you try to drag the list again it doesn't drag.
… stops moving

This makes the map pannable in a scrolling column as intended. This exact fix re-enabled scrolling when the map stops moving, which is sufficient to make the column scrollable again after the user is done moving the map.
@barbeau barbeau marked this pull request as ready for review June 3, 2022 20:03
// fun testPanMapUp_MapCameraChangesColumnDoesNotScroll() {
// initMap()
// // Swipe the map up
// // FIXME - for some reason this scrolls the entire column instead of just the map
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@arriolac @wangela I still need to work on this unit test further (for some reason it fails when it should pass), but I'd like to go ahead and get this PR merged first and add this test later (IMHO it's a "nice-to-have"). Otherwise, due to the refactoring in this PR I keep getting merge conflicts every time the main branch is changed.

So it should be ready for review.

)
)
if (!isMapLoaded) {
androidx.compose.animation.AnimatedVisibility(
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add import statement above so you can use just AnimatedVisibility here?

Copy link
Contributor Author

@barbeau barbeau Jun 3, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When I try this I get a compile error:

e: C:\android-projects\android-maps-compose\app\src\main\java\com\google\maps\android\compose\MapInColumnActivity.kt: (159, 21): 'fun ColumnScope.AnimatedVisibility(visible: Boolean, modifier: Modifier = ..., enter: EnterTransition = ..., exit: ExitTransition = ..., label: String = ..., content: AnimatedVisibilityScope.() -> Unit): Unit' can't be called in this context by implicit receiver. Use the explicit one if necessary

I ran across this on SO:
https://stackoverflow.com/questions/67975569/why-cant-i-use-animatedvisibility-in-a-boxscope

Apparently it's a bug 🤷 (?):
https://youtrack.jetbrains.com/issue/KT-48215

onMapLoaded()
},
)
Box(
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering if we can do without the invisible Box layout—curious if you tried this technique on the parent Box layout or on the GoogleMap composable directly?

Copy link
Contributor Author

@barbeau barbeau Jun 3, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, thanks for pointing this out! I went through a lot of iterations and thought I tried this, but apparently not, because it does work without the invisible Box. I updated it in c2268fe to use .pointerInteropFilter() directly on GoogleMapViewInColumn():

        GoogleMapViewInColumn(
		modifier = Modifier
			.fillMaxSize()
			.testTag("Map")
			.pointerInteropFilter(
				onTouchEvent = {
				...

I was hoping this would fix the test FIXME issue too, but unfortunately not...

Copy link
Member

@arriolac arriolac left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:shipit:

@barbeau barbeau merged commit 0d01aeb into main Jun 6, 2022
@barbeau barbeau deleted the sean/scroll-example branch June 6, 2022 14:08
@googlemaps-bot
Copy link
Contributor

🎉 This PR is included in version 2.2.1 🎉

The release is available on:

Your semantic-release bot 📦🚀

webfrea-k added a commit to webfrea-k/android-maps-compose that referenced this pull request Jun 12, 2022
* chore: Fix recommendation on setting the camera's position. (googlemaps#51)

Change-Id: I5c2fc72df6e1aaade50f62ab825b13b506160a67

* chore(Test): Add UI tests (googlemaps#37)

* chore(Test): Add androidTest.

Change-Id: I35a30c7b70bbb88804db8ce5e0e8146c4aa5cb53

* Add connectedCheck step.

Change-Id: I0a1530cc9133f2d07f682917f7ac709aee3e8406

* Run connectedCheck on app only

Change-Id: I58d97e288db98eac56ef6df9659b653ac2aa92b2

* Upload test reports.

Change-Id: I41ec0a6b30d77bf9803e53e7d6f93efbf01e642b

* Remove failing test.

Change-Id: I14c1b96d13fe796c5145de79df3f1f25046f00c6

* Add timeout to await call.

Change-Id: I7dfd70c1e15f7a9c357d506006aae3c3c3426636

* Inject maps API key.

Change-Id: Ia3fdd45c839f64df9610b93cc0023c80ab72e465

* Injecting api key sooner.

Change-Id: I106362be7128ebdeed133febfc1c8dc2ad062370

* Create local.properties file.

Change-Id: Ifab425e1a664da74c407bb6d2bf7bf76d1cd3854

* Move api key inject a step before connectedCheck.

Change-Id: Idf737d9d1e7eab3d9b94d60d11cd9f2b0d8a70b2

* Simplify test workflow.

Change-Id: Ic55a817da8fb344ac0185c50c107e582b6f42de5

* Add back synced test.yml and rename to instrumentation-test.yml

Change-Id: I3a9ffe7b48591e7e0ec0c79f79d86a34aec6110a

* Add debug statement.

Change-Id: Ia75de3fe64826dea3cbd807a1c82cbd06e06a291

* Inject API key directly in AndroidManifest.xml

Change-Id: Ie922328946106712d66791a0589f592b3109b36a

* Update layout on sample app.

Change-Id: I26075247a5cf0ba5a889fb67fbb08b6312cd076a

* Use a single API level.

Change-Id: Ifd2aa8abfce30251207e057565b6694787164db6

* s/waitForIdle/waitUntil

Change-Id: Icef7d759573d1459a37e3d9058a1214ee2e52301

* Adjust rounding error.

Change-Id: Ieefa005ab8c83e3d287a53f00c8b79c229f5a372

* chore: Synced local '.github/' with remote 'sync-files/android/.github/' (googlemaps#56)

* chore: Add license headers. (googlemaps#55)

Change-Id: I0029c52b31fdc977e5c6e105ace5df7097b7c287

* docs(README): Clarify that MapUiSettings should be preferred. (googlemaps#59)

Change-Id: I4af84fa16323ddd867c08f9d2e65ffc8da3fe6bb

* feat: Add support to get projection. (googlemaps#53)

* feat: Add support to get projection.

Change-Id: I999c56e6a31e33dd4c8d20215d24f56509a3e967

* Add tests for projection.

Change-Id: Ia1a9b3dd95080e5df62e4aadf5fd46b03d82175b

* Update waitUntil duration.

Change-Id: Ic71bdd2fa8efe9a7a949d96b25010ee744c54a68

* chore(release): 1.3.0 [skip ci]

# [1.3.0](googlemaps/android-maps-compose@v1.2.0...v1.3.0) (2022-03-10)

### Features

* Add support to get projection. ([googlemaps#53](googlemaps#53)) ([e085588](googlemaps@e085588))

* chore: Synced local '.github/' with remote 'sync-files/android/.github/' (googlemaps#63)

* fix: Use firstOrNull vs first to prevent NoSuchElementException (googlemaps#43)

* Fixed Collection contains no element matching the predicate.

* first or null overlay node; no wildcard imports

* chore(release): 1.3.1 [skip ci]

## [1.3.1](googlemaps/android-maps-compose@v1.3.0...v1.3.1) (2022-03-14)

### Bug Fixes

* Use firstOrNull vs first to prevent NoSuchElementException ([googlemaps#43](googlemaps#43)) ([c68fc93](googlemaps@c68fc93))

* docs: Link releases for required version of Compose. (googlemaps#66)

Change-Id: I00da3f9b6db4b406da5aca61ed25550feb311afe

* feat: Add marker drag event callback to Marker composable (googlemaps#11)

* Fix renamed property name on README

* Replace MarkerDragState with onMarkerDrag callback

* Add sample code to show how to use marker drag callback

* Fix API doc

* Introduce MarkerPositionState

* Remove onMarkerDrag callback

* Update sample

* Implement `rememberSaveable` for MarkerPositionState

* chore: Bump version to 2.0-SNAPSHOT (googlemaps#68)

Change-Id: Id18d60619ad573ef79b0c81dd05cda7e84fc8a4a

* feat: Support showing/hiding info window. (googlemaps#69)

* feat: Support showing/hiding info window.

Change-Id: I3de945bd8847edd533b89d7b8f1381114df56469

* Update waitUntil timeout.

Change-Id: I5bc6b43171745e2d3df20a09e04fc116297c196d

* Add test for reusing markerstate.

Change-Id: Iccdbd0f53f424df3bf055f9b3083640716be6487

* docs: Update README to use MarkerState. (googlemaps#70)

Change-Id: I35b57a23cf80d8bf48bba31191f5415ebec72a3d

* chore: Synced local '.github/' with remote 'sync-files/android/.github/' (googlemaps#73)

* chore(release): 2.0.0

Change-Id: Id72487859f494d724cc15c55e66eb63d61b52c2d

* chore: Remove core-ktx from demo app. (googlemaps#77)

Change-Id: Iffc775b16a8727589957551bd91d5029d5f7ae33

* chore: Synced local '.github/' with remote 'sync-files/android/.github/' (googlemaps#80)

* chore: Update blunderbuss.yml. (googlemaps#81)

Change-Id: Ic0b2a92f1d2b37b4f86a0ad2935961d8748b0673

* feat: Support specifying animation duration for camera changes. (googlemaps#83)

* feat: Support specifying animation duration for camera changes.

Change-Id: I18e60574610a5c248627af75369498c9e3e16889

* Use null to indicate default animation duration.

Change-Id: I13fcb192b0e43d40380d07ed2933cd2c29b7d14a

* Use Int.MAX_VALUE for default animation.

Change-Id: Ib77e018ad175e591419191a736d38c1b01bf3c45

* Check for MAX_VALUE for default animation.

Change-Id: I65c007e74dc4d5f2d9b3469d2d4edf4c542fad72

* chore(release): 2.1.0 [skip ci]

# [2.1.0](googlemaps/android-maps-compose@v2.0.0...v2.1.0) (2022-03-31)

### Features

* Support specifying animation duration for camera changes. ([googlemaps#83](googlemaps#83)) ([aa02773](googlemaps@aa02773))

* chore: Add maps_android_compose_dependency region tag. (googlemaps#96)

* chore: Add maps_android_compose_dependency region tag.

Change-Id: I1569e7586eaefa51c05a15d6bf300809dbdece4e

* Fix spacing.

Change-Id: Ia2eb9574e3137472d7ec8448a70adfc74992b52d

* chore: Edit maps_compose_dependency region tag. (googlemaps#97)

Change-Id: Id511cb48f8ce6bb8fde6ac467d3877ffc07dc7ed

* fix: Ensure CameraPositionState map reference clears when GoogleMap l… (googlemaps#109)

* fix: Ensure CameraPositionState map reference clears when GoogleMap leaves composition.

Change-Id: Iccf615e1a468ea7fbddb652052cec51b5d98a763

* Adding test for GoogleMap coming in and out of the Composition.

Change-Id: I4e4bcdd39561ca17515e4c4891742c50bd14e409

* PR feedback.

Change-Id: I4e7ce6dc006cee72f49e29b7eb15303ae71e4654

* chore(release): 2.1.1 [skip ci]

## [2.1.1](googlemaps/android-maps-compose@v2.1.0...v2.1.1) (2022-05-06)

### Bug Fixes

* Ensure CameraPositionState map reference clears when GoogleMap l… ([googlemaps#109](googlemaps#109)) ([2f09c6d](googlemaps@2f09c6d))

* docs: Add compose version requirement to installation (googlemaps#101)

* docs: Add compose version requirement to installation

Users are installing older version of Compose and hitting problems - see:
* googlemaps#67 (comment)
* https://discordapp.com/channels/676948200904589322/939194796138975263/966366331492524102

This change makes it clearer in the installation instructions what the current base Compose requirement is without needing to look through the release notes.

* chore: Fix formatting

* docs: Add missing Javadocs for GoogleMap contentPadding parameter (googlemaps#93)

docs: Add missing Javadocs for GoogleMap contentPadding parameter

* chore: Synced file(s) with googlemaps/.github (googlemaps#114)

* chore: Created local '.github/sync-repo-settings.yaml' from remote '.github/sync-repo-settings.yaml'

* chore: Created local '.github/workflows/dependabot.yml' from remote '.github/workflows/dependabot.yml'

* build: standardize check name (googlemaps#115)

* build: update required checks (googlemaps#117)

* chore: fix typo in check name (googlemaps#118)

* chore: Bump library dependency in app (googlemaps#111)

* chore: Synced local '.github/workflows/dependabot.yml' with remote '.github/workflows/dependabot.yml' (googlemaps#119)

* chore: Synced local '.github/workflows/dependabot.yml' with remote '.github/workflows/dependabot.yml' (googlemaps#120)

* chore: simplify dependabot workflow

* chore: update pull request approval comment

* chore: fix approval by providing url to pr

* chore: add --approve

* chore: only approve

* chore: Use explicitApi. (googlemaps#121)

Change-Id: Ibd3d442cefe59a194bb648143b802262e0ce5649

* build: change dependabot interval to weekly (googlemaps#125)

* feat: Update to Compose 1.2.0-beta02 (googlemaps#124)

* feat: Update to Compose 1.2.0-beta02

Change-Id: I37b7a0e3388a0bbb10ae75149ebd81a07e2bde26

* Fix tests.

Change-Id: I9c1a71e78f527a7c2041a5e4af327ecd1728cb47

* chore(release): 2.2.0 [skip ci]

# [2.2.0](googlemaps/android-maps-compose@v2.1.1...v2.2.0) (2022-05-23)

### Features

* Update to Compose 1.2.0-beta02 ([googlemaps#124](googlemaps#124)) ([09765d1](googlemaps@09765d1))

* chore: update owners (googlemaps#127)

* chore: Add GoogleMapComposable annotation. (googlemaps#130)

* chore: Add GoogleMapComposable annotation.

* Address PR feedback.

Change-Id: I2819da87f7b3c3f1505402ff718b2139b6b1d114

* Remove GoogleMapComposable annotation from sample.

Change-Id: Ide6c50f04e62ed4f4fae1d50f4500d677d41bd76

* docs: Update demo app to include more examples (googlemaps#94)

It now includes a new main activity with buttons for each example - the previous example is now "Basic Map Activity".

It also adds an example for using the map in a column to serve as documentation for googlemaps#78 - "Map In Column Activity".

* fix: Prevent MapView from being recreated when still in composition (googlemaps#137)

Addresses a bug wherein the underlying MapView gets recreated due to
lifecycle events, however, the GoogleMap composable never leaves
the composition. In this state, map properties (markers, camera
position, etc.) don't get restored.

Change-Id: Iba141aa2f325fa505ef8cc2f015117bcaea856c4

* chore(release): 2.2.1 [skip ci]

## [2.2.1](googlemaps/android-maps-compose@v2.2.0...v2.2.1) (2022-06-07)

### Bug Fixes

* Prevent MapView from being recreated when still in composition ([googlemaps#137](googlemaps#137)) ([83b1cd7](googlemaps@83b1cd7))

Co-authored-by: Chris Arriola <c.rriola@gmail.com>
Co-authored-by: googlemaps-bot <googlemaps-bot@google.com>
Co-authored-by: semantic-release-bot <semantic-release-bot@martynus.net>
Co-authored-by: Takao Chiba <chibatching@users.noreply.github.com>
Co-authored-by: Chris Arriola <chrisarriola@google.com>
Co-authored-by: Sean Barbeau <sjbarbeau@gmail.com>
Co-authored-by: Justin Poehnelt <jpoehnelt@google.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants