2010-08-12 53 views
5

我試圖使用ViewFlipper在視圖之間添加動畫,如下面的主題教程。但是,它似乎並不想工作。它會改變頁面,但我不會獲得動畫 - 即使我爲push_left_in添加了一個巨大的延遲。ViewFlipper沒有動畫?

這裏是我的onCreate:


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     viewFlipper = (ViewFlipper)findViewById(R.id.flipper); 
     viewFlipper.setAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in)); 
     mapView = (MapView)findViewById(R.id.mapView); 
     mapView.setBuiltInZoomControls(true); 
    } 

push_left_in來自谷歌的樣品。這裏的觸發動作:


    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle item selection 
     switch (item.getItemId()) { 
     case R.id.button_map: 
      viewFlipper.setDisplayedChild(0); 
      return true; 
     case R.id.button_conditions_general: 
      viewFlipper.setDisplayedChild(1); 
      return true; 
(etc) 

而且我的佈局:

 

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout android:id="@+id/mainlayout" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       xmlns:android="http://schemas.android.com/apk/res/android"> 

    <ViewFlipper android:id="@+id/flipper" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent"> 

    <view class="com.google.android.maps.MapView" 
      android:id="@+id/mapView" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:clickable="true" 
      android:apiKey="MY_API_KEY" 
      /> 

    <TableLayout 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:background="#ffffff" 
       android:stretchColumns="1" 
       > 
     <TableRow> 
     <TextView android:id="@+id/field1" 
        android:layout_column="1"   
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:textColor="#000000" 
        android:textStyle="bold" 
        android:textSize="18px" 
        android:text="@string/field1" 
        > 
     </TextView> 
     <EditText android:text="100" 
        android:id="@+id/field2" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"> 
     </EditText> 
     <TextView android:id="@+id/field3" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:textColor="#000000" 
        android:textStyle="bold" 
        android:textSize="18px" 
        android:text="%" 
        > 
     </TextView> 
     </TableRow> 
    </TableLayout> 

    </ViewFlipper> 
</LinearLayout> 

 

的思考?

+0

沒有在我躍起了,雖然我還沒有在ViewFlipper使用的MapView之前。 FWIW,這裏是一個示例項目,展示了一個ViewFlipper的動畫,以防萬一:http://github.com/commonsguy/cw-android/tree/master/Fancy/Flipper2/ – CommonsWare 2010-08-13 00:26:14

+0

@CommonsWare你已經從中刪除了動畫例。有什麼問題? – ohhorob 2010-12-13 22:03:33

+0

@ohhorob:對不起。這只是爲了簡化書中的例子,因爲我沒有在該書的其他地方處理動畫。 – CommonsWare 2010-12-13 22:09:55

回答

11

嘗試在xml文件中設置您的動畫。

<ViewFlipper android:id="@+id/flipper" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:inAnimation="@anim/push_left_in"> 
+0

這樣做 - 謝謝!對於那些存在這個問題的其他人來說:由於仿真器的低幀速率,我無法立即看到該修補程序通過仿真器工作 - 但是額外的延遲讓我看到它。 再次感謝shwiz! – Karen 2010-08-15 01:45:04

0

您需要分別設置進出動畫。您可以在XML做到這一點:

<ViewFlipper 
    android:id="@+id/view_flipper" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:inAnimation="@anim/in_from_right" 
    android:outAnimation="@anim/out_to_left"> 

或代碼:

viewFlipper.setInAnimation(getActivity(), R.anim.in_from_right); 
viewFlipper.setOutAnimation(getActivity(), R.anim.out_to_left);