直到 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);