我想创建一个在其父级左侧对齐的edittext,当用户单击它时,edittext的width将增加到右侧。这是我使用的代码。但是当动画结束时,edittext宽度会变成第一个大小。
任何人都可以帮助我。?是否有任何解决方案可以在动画中将“fillparent”设置为宽度的最终大小?
Animation scaleAnimation = new ScaleAnimation(0, -500, 1, 1);
scaleAnimation.setDuration(750);
editText.startAnimation(scaleAnimation);
我在动画开始之前添加了scaleAnimation.setFillAfter(true);
,但我得到了这个;
在750ms之后,edittext将转到第一个宽度。
答案 0 :(得分:5)
这绝对适合您。
这样做的动态方式:
ScaleAnimation animate = new ScaleAnimation(1, 2, 1, 1, Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 0);
animate.setDuration(700);
animate.setFillAfter(true);
target.startAnimation(animate);
使用XML的方式
scale.xml (将其放在res / anim文件夹中)
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true">
<scale
android:duration="400"
android:fillAfter="true"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:pivotX="0%"
android:pivotY="0%"
android:toXScale="2.0"
android:toYScale="1.0" >
</scale>
</set>
Java代码:
Animation anim = AnimationUtils.loadAnimation(Anims.this, R.anim.scale);
mEdittext.startAnimation(anim);
答案 1 :(得分:2)
这样做
Animation scaleAnimation = new ScaleAnimation(0, -500, 1, 1);
scaleAnimation.setDuration(750);
scaleAnimation.setFillAfter(true);
editText.startAnimation(scaleAnimation);
答案 2 :(得分:-1)
使用
scaleAnimation.setFillAfter(true);
或使用ObjectAnimator:
ObjectAnimator animWidth = ObjectAnimator.ofInt(your_view, "width", startWidth,endWith);
animWidth.setDuration(yourDuration);
animWidth.start();
答案 3 :(得分:-1)
尝试一下这个。
动画scaleAnimation = new ScaleAnimation(0,-500,1,1);
scaleAnimation.setDuration(750);
scaleAnimation.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {}
@Override
public void onAnimationRepeat(Animation animation) {}
@Override
public void onAnimationEnd(Animation animation) {
//Set your editext width to match parent using layout params
}
});
editText.startAnimation(scaleAnimation);