2010-12-21 85 views
0

我有一個小的但惱人的問題與動畫在Android的意見。查看仍然存在但被動畫移出後不可見

涉及什麼: 我有一個FrameLayout在另一個FrameLayout包含在一個XML中。

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 

     <ListView 
       android:id="@android:id/list" 
       android:layout_height="fill_parent" 
       android:layout_width="fill_parent"></ListView> 
     <FrameLayout 
       android:id="@+id/TopBanner" 
       xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content"> 
       <ImageView 
         android:id="@+id/ImageView01" 
         android:layout_width="fill_parent" 
         android:background="@drawable/topmenu" 
         android:layout_height="150dip"></ImageView> 

       <Gallery 
         android:id="@+id/Gallery01" 
         android:layout_width="fill_parent" 
         android:layout_height="wrap_content"></Gallery> 
     </FrameLayout> 
</FrameLayout> 

我也寫了一個動畫XML:

<?xml version="1.0" encoding="utf-8"?> 
<set 
     android:interpolator="@android:anim/bounce_interpolator" 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     fillEnabled="true" 
     android:fillBefore="true" 
     android:fillAfter="true"> 
     <translate 
       android:duration="500" 
       android:fromYDelta="0" 
       android:toYDelta="-80%" /> 
</set> 

我想是翻譯上點擊我內心的FrameLayout(topbanner)從活動視圖,除了它的20%,在爲了使它在我點擊它時重新出現。一種頂級菜單。

我設法申請我的動畫,但即使我的佈局被翻譯我可以觸摸它,如果它仍然存在。任何建議?這是我的java代碼:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     UserSettings = getSharedPreferences("net.blabla_preferences", MODE_WORLD_WRITEABLE); 

     tab = getIntent().getExtras().getInt("net.blabla.FigureTab"); 

     setContentView(R.layout.layout_figure_list); 

     final Animation animation = AnimationUtils.loadAnimation(this, R.anim.animation_topbanner); 
     topbanner = (FrameLayout) findViewById(R.id.TopBanner); 


     topbanner.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       v.startAnimation(animation); 
      } 
     }); 

     load(); 

    } 
+1

對於動畫編寫動畫偵聽器[animation.setAnimationListener],並在動畫結束時嘗試將topbanner的可見性更改爲View.GONE。 – Varun 2010-12-21 18:37:15

回答

1

編輯: 自3.0 Honeycomb出現以來,情況發生了變化。有一個全新的動畫系統可以利用,請看這裏:Android Developer's Blog

動畫不影響屏幕上視圖的'物理'位置。如果你想讓它實際移動,那麼你需要調整視圖的屬性。

對於您的情況,更簡單的解決方案是使用SDK中包含的SlidingDrawer小部件。既然你試圖實現一個拉出菜單,這似乎是一個完美的選擇。

相關問題