2011-08-04 54 views
2

我有一個Activity主屏幕,只有一個標題欄(等)。我在標題欄下方還有另一個TextView,我有從上到下的動畫效果(最初爲View.GONE,然後在用戶發生事件後將其設置爲可見並放置到位)。繼續查看以上動畫的另一個視圖

這工作正常和丹迪,除了標題欄下面的TextView動畫在標題欄上方的地方。我希望它看起來好像TextView來自標題欄下面。兩個視圖都在LinearLayout中,所以我無法像在FrameLayout中那樣處理z順序。有什麼建議麼?

回答

2

我最終通過包含LinearLayout內部的textview,然後將LayoutAnimationController設置爲LinearLayout來解決此問題。這將導致所有childs相對於父容器進行動畫處理,這使得下拉列表只能在LinearLayout內呈現(完美運行)。下面是我用動畫控制代碼和ListView:

private void addDeleteDropAnimation() { 
    AnimationSet set = new AnimationSet(true); 

    Animation animation = new AlphaAnimation(0.0f, 1.0f); 
    animation.setDuration(150); 
    set.addAnimation(animation); 

    animation = new TranslateAnimation(
     Animation.RELATIVE_TO_SELF, 0.0f,Animation.RELATIVE_TO_SELF, 0.0f, 
     Animation.RELATIVE_TO_SELF, -1.0f,Animation.RELATIVE_TO_SELF, 0.0f 
    ); 
    animation.setDuration(300); 
    set.addAnimation(animation); 

    controllerDel = new LayoutAnimationController(set, 0.5f); 
    vw_delLinearLayout.setLayoutAnimation(controllerDel); 
} 
+0

嗨,即使我被困在類似的問題。我試過你的解決方案,但沒有奏效。我可能做錯了什麼? – gauravsapiens

0
Handler handler = new Handler(); 
new Thread(){ 
    public void run(){ 
     TextView tv = (TextView)findViewById(R.id.xx); 
     LayoutParams params = (LayoutParams)tv.getLayoutParams(); 
     handler.post(new Runnable(){ 
      public void run(){    
       tv.setVisible(View.Visible); 
      } 
     } 
     int height = params.height; 
     for(int i = 0; i < height + 1; i++) { 
      params.topMargin = i - height; 
      handler.post(new Runnable(){ 
       public void run(){    
        tv.requestLayout(); 
       } 
      } 

      try{ 
       Thread.sleep(5); 
      }catch(InterruptedException e){ 
      } 
     } 

    } 
}.start(); 

你可以試試這個。

+0

此代碼似乎是一個動畫手工代碼...我可以使用與startAnimation()方法沿着動畫對象實現同樣的事,可我嗎?有什麼理由相信你的代碼繪製的textview會在我的應用程序的標題欄下面呈現嗎? –

+0

當視圖做動畫。該物業不會改變。 爲什麼不先試一試。 –

相關問題