缩放动画后的视图尚未调整到新位置。
我使用 android 动画(ScaleAnimation)将布局(启动时的屏幕尺寸)缩放到自身尺寸的 0.95 倍,并且比例参考屏幕中心点。
final AnimationListener al2 = new AnimationListener() {
@Override
public void onAnimationStart(Animation arg0) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation arg0) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation arg0) {
}
};
public void animScale(){
ScaleAnimation sa = new ScaleAnimation(1,0.95f,1,0.95f, topLayout.getMeasuredWidth()/2, topLayout.getMeasuredHeight()/2);
sa.setDuration(500);
sa.setFillEnabled(true);
sa.setFillAfter(true);
sa.setAnimationListener(al2);
topLayout.startAnimation(sa);
}
public void onCreate(Bundle savedInstanceState) {
scaleButton = (Button) findViewById(R.id.scaleButton);
scaleButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
animScale();
}
});
}
Run Code Online (Sandbox Code Playgroud)
在此动画之后,我的布局已更改为新位置,但是当我再次单击按钮时
布局始终从屏幕尺寸缩放到0.95倍。
向我展示布局永远不会通过动画改变实际大小。
我需要在动画监听器动画结束中添加什么代码?
我希望当我单击按钮时它会做到这一点,屏幕尺寸 - >屏幕尺寸* 0.95 - >屏幕尺寸* 0.95 ^ 2 - >........
多谢。
小智 0
ScaleAnimation 不会更改布局的参数。它无需更改参数即可制作动画,以获得更流畅的动画。
您可以创建一个布尔实例变量
Boolean animationDone = false;
Run Code Online (Sandbox Code Playgroud)
并将其设置为 trueonAnimationEnd以指示动画是否完成
public void onAnimationEnd(Animation arg0) {
animationDone=true;
}
Run Code Online (Sandbox Code Playgroud)
并在制作动画之前在 animScale 中检查它以防止多个动画......
public void animScale(){
if ( animationDone ) return;
//..... animation code here...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1850 次 |
| 最近记录: |