gpt4 book ai didi

android - setLayoutParams() 动画持续时间不起作用

转载 作者:太空狗 更新时间:2023-10-29 13:12:02 25 4
gpt4 key购买 nike

我有 LayoutParams 转换与 addRule()

我的观点改变了位置,但持续时间是瞬间的。

我在 API 15 上工作,所以我不能使用 beginDelayedTransition()

Animation a = new Animation() {

@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {

final RelativeLayout.LayoutParams positionRules = new RelativeLayout.LayoutParams(layoutFalse.getWidth(), layoutFalse.getHeight());

positionRules.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
positionRules.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
layoutFalse.requestLayout();
layoutFalse.setLayoutParams(positionRules);
}
};

a.setDuration(3000);
layoutFalse.startAnimation(a);

最佳答案

在此 block 中,您不执行任何动画操作。你只要说:

让这个物体在每一帧里都有我想要的约束。没有了。

所以,我认为,如果你想为某些东西设置动画,你必须像这样使用 interpolatedTime:在没有动画的 RelativeLayout 中设置 View 的位置:

public void setTopLeftCornerF(float leftMargin, float topMargin) {
if (this.getLayoutParams() instanceof RelativeLayout.LayoutParams) {
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)this.getLayoutParams();
params.width = (int)_width;//w();
params.height = (int)_height;//h();
params.setMargins((int)leftMargin, (int)topMargin, (int)-leftMargin, (int)-topMargin);
this.setLayoutParams(params);
}
}

在某处使用动画:

@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
// TODO Auto-generated method stub
super.applyTransformation(interpolatedTime, t);
float posX = (float) (mFromX + ((mToX - mFromX) * interpolatedTime));
float posY = (float) (mFromY + ((mToY - mFromY) * interpolatedTime));

t.getMatrix().setTranslate(posX,posY);
}

或使用 TranslateAnimation 描述 here

关于android - setLayoutParams() 动画持续时间不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39435691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com