缩放动画只有一个字母?

时间:2014-05-13 12:51:19

标签: android eclipse android-animation

在我的活动中是一个词" Ecl pse"和一个按钮。点击按钮后我想要字母"我"看起来很大然后变小,直到它与Ecl pse这个词的其他字母一样大。瞬间,整个单词Eclipse受到缩放动画的影响。因此,在我点击按钮后,整个单词Eclipse看起来更大并且越来越小。但我只想要这封信"我"缩放动画。这是如何运作的?

public Button btn;
public TextView tw;
Animation a;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.pagetwo);



    btn = (Button) findViewById(R.id.BtnKlick);
    tw = (TextView) findViewById(R.id.tvhallo);
    a= AnimationUtils.loadAnimation(this, R.anim.scale);

    btn.setOnClickListener(this);

    SpannableString text = new SpannableString("Ecl pse");  

}



@Override
public void onClick(View v) {
    // TODO Auto-generated method stub

    String text = tw.getText().toString();
    int n = 3; 
    String newText = text.substring(0, n) + "i" + text.substring(n + 1);

    tw.setText(newText);
    tw.startAnimation(a);

1 个答案:

答案 0 :(得分:1)

您可以通过将Spannable(带有标记的文字)与ValueAnimator相结合来更新所需部件的相对大小,从而实现此目的。例如:

ValueAnimator animator = new ValueAnimator();
animator.setDuration(4000);
animator.setObjectValues("Ecl pse", "Eclipse");

animator.setEvaluator(new TypeEvaluator<CharSequence>()
{
    @Override
    public CharSequence evaluate(float fraction, CharSequence startValue, CharSequence endValue)
    {
        float relativeSize = 4 - 3 * fraction;
        Spannable span = new SpannableString("Eclipse");
        span.setSpan(new RelativeSizeSpan(relativeSize), 3, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        return span;
    }
});

animator.addUpdateListener(new AnimatorUpdateListener()
{
    @Override
    public void onAnimationUpdate(ValueAnimator animation)
    {
        textView.setText((CharSequence)animation.getAnimatedValue());
    }
});

animator.start();

这将显示&#34; i&#34;是周围文字的4倍,然后缩小,直到它与其余文字大小相同。您可以自定义持续时间,插值器和&amp; c以达到您想要的效果。