Enrique López Mañas 0595432ad3
chore: unified Java/Kotlin project (#2026)
* chore: unified Kotlin and Java modules

* chore: unified resources

* chore: removed Kotlin

* chore: headers

* chore: headers

* chore: headers

* chore: headers

* chore: added insets

* chore: headers

* chore: renamed

* fix: Refactor map creation, centralize Map ID, add Kotlin boundary controls

This commit refactors how map fragments and Map IDs are handled across the Java and Kotlin demo applications, and introduces feature parity for boundary layer controls in the Kotlin demo.

Key changes include:

- **Programmatic Map Fragment Creation:**
    - Replaced static `<fragment>` map declarations with `<FrameLayout>` containers (`map_fragment_container`) in `data_driven_boundaries_demo.xml` and `data_driven_styling_demo.xml` layouts.
    - Modified `DataDrivenBoundariesActivity` and `DataDrivenDatasetStylingActivity` (Java & Kotlin) to instantiate `SupportMapFragment` programmatically using `SupportMapFragment.newInstance(mapOptions)`.
    - Map options (`GoogleMapOptions`) are now created with the dynamically retrieved Map ID before fragment creation.
      - this allows moving the Map ID out of the xml files

- **Centralized Map ID and Configuration Logic:**
    - Introduced `ApiDemoApplication` in both Java (`java-app`) and Kotlin (`kotlin-app`) modules.
    - This class centralizes Map ID retrieval, checking `BuildConfig.MAP_ID` first, then the `R.string.map_id` resource, providing a consistent source.
    - The Kotlin `ApiDemoApplication` also includes API Key validation on application startup.

- **Kotlin DataDrivenBoundaries Feature Enhancement:**
    - Added boundary layer selection controls (popup menu via `button_feature_type`) to the Kotlin `DataDrivenBoundariesActivity`, achieving parity with the Java version's functionality.
    - Implemented state management for toggling Locality, Administrative Area Level 1, and Country layers.
    - Added dynamic styling logic to apply/remove styles based on layer visibility.
    - Updated feature click handling for country selection, respecting layer activation state.

- **Miscellaneous Improvements:**
    - Added distinct demo titles (`demo_title_java`, `demo_title_kotlin`) in `strings.xml` for better app identification.
    - Updated resource references within Java/Kotlin activities for cleaner imports (e.g., `R.id...` instead of fully qualified names).

* chore: address various lint issues

* fix: explicitly bind checkboxes in the UI

---------

Co-authored-by: dkhawk <107309+dkhawk@users.noreply.github.com>
2025-04-14 14:08:08 -06:00

34 lines
1.2 KiB
Prolog

#
# Proguard config for the demo project.
#
# This file only contains the proguard options required by the Google Maps
# Android API v2. It should be used in addition to the one provided by the
# Android SDK (<sdk>/tools/proguard/proguard-android-optimize.txt).
#
# For more details on the use of proguard in Android, please read:
# http://proguard.sourceforge.net/manual/examples.html#androidapplication
-optimizations !code/simplification/variable
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Fragment
-keep public class * extends android.support.v4.app.Fragment
# The Maps API uses custom Parcelables.
# Use this rule (which is slightly broader than the standard recommended one)
# to avoid obfuscating them.
-keepclassmembers class * implements android.os.Parcelable {
static *** CREATOR;
}
# The Maps API uses serialization.
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
static final java.io.ObjectStreamField[] serialPersistentFields;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}