直到android排除的版本3(API 11),所有動畫並不真正改變視圖,只是顯示它的方式。不僅如此,我認爲他們根本不使用GPU。
爲了檢查出來,你可以使用一個按鈕和setOnClickListener來查看它,並且看到不管你使用哪個動畫,該點擊只能在其原始位置和大小上工作。
這裏使用translateAnimation移動視圖的示例代碼:
final int deltaXToMove=50;
TranslateAnimation translateAnimation=new TranslateAnimation(0,deltaXToMove,0,0);
int animationTime=1000;
translateAnimation.setDuration(animationTime);
translateAnimation.setFillEnabled(true);
translateAnimation.setFillAfter(true);
final Button b=(Button)findViewById(R.id.button);
translateAnimation.setAnimationListener(new AnimationListener()
{
@Override
public void onAnimationEnd(Animation animation)
{
animation.setFillAfter(false);
FrameLayout.LayoutParams par=(LayoutParams)b.getLayoutParams();
par.leftMargin=deltaXToMove;
b.setLayoutParams(par);
}
...
b.startAnimation(translateAnimation);
是的,你是對的。實際的位置沒有改變,我不知道當時setfillafter的用法是什麼。 – Programmer
在我看來,整個動畫功能達到android 3(不包括)是非常奇怪的,幾乎沒用。它只適用於簡單的事情,例如過渡和來去的項目的動畫(例如,到listView)。 –
上面的一個不工作...請參閱這個視頻其基本問題,我面臨的是,列表視圖向上移動,但是當我滾動以前的視圖的痕跡過來。 http://www.youtube.com/watch?v=XcKpJu8zWe8&feature=relmfu – Programmer