使用缩放动画更改EditText宽度而不缩放其中的字符?

时间:2015-07-03 15:25:28

标签: android android-layout

我有一个EditText,我使用这个xml将其从100%缩放到80%:

<?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:fromXScale="1.0"
            android:fromYScale="1.0"
            android:pivotX="0%"
            android:pivotY="0%"
            android:toXScale="0.8"
            android:toYScale="1.0" >
    </scale>
</set>

在此之后我的文字也缩放了。 如何在不缩放文本的情况下使用动画缩放/更改EditText宽度。关心所有人。

2 个答案:

答案 0 :(得分:3)

我找到了答案。这是:

public class ResizeWidthAnimation extends Animation
{

private int mWidth;
private int mStartWidth;
private View mView;

public ResizeWidthAnimation(View view, int width)
{
    mView = view;
    mWidth = width;
    mStartWidth = view.getWidth();
}

@Override
protected void applyTransformation(float interpolatedTime, Transformation t)
{
    int newWidth = mStartWidth + (int) ((mWidth - mStartWidth) * interpolatedTime);

    mView.getLayoutParams().width = newWidth;
    mView.requestLayout();
}

@Override
public void initialize(int width, int height, int parentWidth, int parentHeight)
{
    super.initialize(width, height, parentWidth, parentHeight);
}

@Override
public boolean willChangeBounds()
{
    return true;
}
}

并且这样称呼它:

    ResizeWidthAnimation anim = new ResizeWidthAnimation(editTextSearch, 500);
    anim.setDuration(400);
    editTextSearch.startAnimation(anim);

答案 1 :(得分:0)

您可以尝试在布局中执行此操作:

android:animateLayoutChanges="true"