2013-01-19 40 views
4

我有中有一個MapFragment安卓:MapFragment不是動畫移動

我mainViewPanel看起來像這樣

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

我翻譯的代碼如下所示

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

其餘的視圖動畫,但地圖保持放。這就像主視圖窗口正在移動,我可以看到更多地圖的右側,但地圖本身並沒有視覺移動。動畫作品就好了其他視圖像一個TextView

+2

這可能是因爲該地圖基於「SurfaceView」,它具有與常規小部件稍有不同的特徵。顯然,有些方法可以轉換地圖,因爲'ViewPager'可以做到這一點,但我懷疑它沒有使用'TranslateAnimation',即使是正常的小部件也很笨重,更不用說'SurfaceView'了。 – CommonsWare

+1

我剛剛遇到完全相同的問題。如果不使用TranslateAnimation,你將如何動畫? – Goddchen

+0

對於老版本的android,我沒有動畫,只是做了類似'mapWrapperView.setPadding(offsetWidth,0,-offsetWidth,0);' –

回答

3

這適用於Android的

mainViewPanel.animate().translationX(500); 
0

這是因爲新的地圖API的使用SurfaceView創建新版本,並且由於該動畫是不可行的。

作爲我發現的一個臨時補丁,是: 使用任何透明視圖覆蓋MapFragment。因此,如果您要爲MapFragment製作動畫,它將使用它進行動畫製作,屆時地圖將不可見。

作爲一個例子:

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

嘗試此。它應該工作。

注意:可能是您在爲視圖添加動畫時必須更改其可見性。 如果您希望地圖在動畫之後顯示,則必須隱藏疊加視圖,並且當您要開始動畫時,必須取消隱藏疊加視圖。但是你必須確保隱藏/取消隱藏過程只有在動畫完成後才能完成。

步驟動畫

  • 動畫完成後啓動動畫,取消隱藏覆蓋圖
  • 之前,意味着一些延遲之後,隱藏覆蓋圖

這對我的作品。