2014-04-10 43 views
0

我正在使用Animation將TextView從0計數到某個值。 但是,控件只刷新幾幀,即如果要從0到100進行計數,我只能看到動畫從0到30,而LogCat繼續顯示詳細輸出。Android使用動畫更改TextView中的文本只刷新幾幀

final Interpolator easing = new AccelerateDecelerateInterpolator(); 
final TextView txtSaldo = (TextView) someView.findViewById(R.id.viewId); 
Animation a = new Animation() 
{ 
    @Override 
    protected void applyTransformation(float interpolatedTime, Transformation t) { 
     Log.v("----", "time: " + interpolatedTime + " : " + interpolatedTime*fidelityBalance); 
     txtSaldo.setText(String.format("%d",(int)(interpolatedTime*fidelityBalance))); 


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

a.setDuration(5500); 
a.setInterpolator(easing); 
txtSaldo.startAnimation(a); 

我試着txtSaldo.requestLayout()txtSaldo.invalidate()但沒有運氣。 有什麼幫助嗎? 由於

+0

您正在使用自定義內插器'easing',您能否提供其代碼? –

+0

nope,緩動是簡單的AccelerateDecelerateInterpolator(編輯) –

+0

你有沒有想過使用[TextSwitcher](http://developer.android.com/reference/android/widget/TextSwitcher.html) –

回答

1

通過迫使無效()頂端找到一種解決方案,主視圖容器:

protected void applyTransformation(float interpolatedTime, Transformation t) { 
     Log.v("----", "time: " + interpolatedTime + " : " + interpolatedTime*fidelityBalance); 
     txtSaldo.setText(String.format("%d",(int)(interpolatedTime*fidelityBalance))); 

     // top container view 
     v.invalidate(); 
    } 

也許問題是由於在視圖其他併發的動畫光潔度而TextView的仍數數。