/ / Android: MapFragment sa nepohybuje v animácii - android, android-animation, mapfragment

Android: MapFragment sa nepohybuje v animácii - android, android animácia, mapfragment

Mám názor, ktorý obsahuje MapFragment

Môj mainViewPanel vyzerá asi takto

<LinearLayout
android:id="@+id/main_view_panel"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="0.5"
android:orientation="horizontal">

<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="0.5"
class="com.google.android.gms.maps.SupportMapFragment"
map:cameraTargetLat="40.72"
map:cameraTargetLng="-74.00"
map:cameraZoom="8"/>

</LinearLayout>

Môj prekladový kód vyzerá takto

TranslateAnimation anim = new TranslateAnimation(0, 500, 0, 0);
anim.setFillAfter(true);
anim.setDuration(250);
mainViewPanel.startAnimation(anim);

Zvyšok zobrazenia sa animuje, ale mapa zostanedať. Je to, akoby sa pohybovalo hlavné okno a napravo od mapy vidím viac, ale samotná mapa sa vizuálne nepohybuje. Animácia funguje rovnako dobre pre iné zobrazenia, ako je napríklad TextView.

odpovede:

3 pre odpoveď č. 1

Funguje to na novších verziách systému Android

mainViewPanel.animate().translationX(500);

0 pre odpoveď č. 2

Je to spôsobené tým, že nové mapové rozhrania sa vytvárajú pomocou aplikácie SurfaceView, a preto animácia nie je uskutočniteľná.

Ako dočasnú opravu, ktorú som našiel, je: Použite akékoľvek priehľadný pohľad na MapFragment, Takže ak budete animovať MapFragment, bude s ním animovať a v tom čase bude mapa neviditeľná.

Ako príklad:

<RelativeLayout
android:id="@+id/main_view_panel"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">

<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="0.5"
class="com.google.android.gms.maps.SupportMapFragment"
map:cameraTargetLat="40.72"
map:cameraTargetLng="-74.00"
map:cameraZoom="8"/>

<ImageView
android:id="@+id/map_overlay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00000000" />

</RelativeLayout>

Skúste to. Malo by to fungovať.

Poznámka : Možno budete musieť zmeniť jeho viditeľnosť, keď animujete zobrazenie. Ak chcete, aby sa mapa zobrazovala po animácii, musíte skryť zobrazenie prekrytia a keď chcete začať s animáciou, musíte prekryvné zobrazenie odkryť. Musíte sa však uistiť, že proces skrytia / skrytia sa uskutoční až po dokončení animácie.

Kroky pre animáciu :

  • Pred spustením animácie odkryte zobrazenie prekrytia
  • po dokončení animácie znamená, že po určitom oneskorení skryjete zobrazenie prekrytia

Funguje to pre mňa.