2014-12-08 105 views
1

我使用下面的代碼動畫擴張佈局:安卓:擴大動畫不工作

class ExpandAnimation extends Animation { 
    private View _view; 
    private int _startHeight; 
    private int _finishHeight; 

    public ExpandAnimation(View view, int startHeight, int finishHeight) { 
     _view = view; 
     _startHeight = startHeight; 
     _finishHeight = finishHeight; 
     setDuration(500); 
     System.out.println(_startHeight); 
     System.out.println(_finishHeight); 
    } 

    @Override 
    protected void applyTransformation(float interpolatedTime, Transformation t) { 
     int newHeight = (int)((_finishHeight - _startHeight) * interpolatedTime + _startHeight); 
     _view.getLayoutParams().height = newHeight; 
     _view.requestLayout(); 
    } 

    @Override 
    public void initialize(int width, int height, int parentWidth, int parentHeight) { 
     super.initialize(width, height, parentWidth, parentHeight); 
    } 

    @Override 
    public boolean willChangeBounds() { 
     return true; 
    } 
}; 

這個動畫創建我點擊一個按鈕,每一次。它被正確地調用(選中System.out.println並打印正確的值),但是在模擬器動畫中只運行15次。確切地說它隱藏起來效果很好,但擴展只能工作一次(在模擬器上,不能在手機上工作)。

可能是什麼問題?

感謝在前進

編輯:佈局我試圖動畫是FrameLayout裏。它具有TextView作爲子項,並且finishHeight通過textView度量高度來衡量。值是正確的。我也嘗試調用textView.requestLayout()在應用轉換重繪佈局,但它不起作用。它有時只是擴展。如果您需要更多代碼,請隨時提問。

+0

我有很多可放大的可點擊區域,它在手機上效果更好,但它仍然不是100%。有時我的手機會識別出我點擊了2個項目,並且它們都展開了。但我認爲他們現在足夠大(如1,2釐米)......真的不知道如何使這項工作更好 – horin 2014-12-08 17:39:53

回答

0

調用

((View) toExpand.getParent()).invalidate(); 

剛過startAnimation解決我的問題。必須在其他設備上檢查它,但我認爲它會起作用。