在我的活动中是一个词" 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);
答案 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以达到您想要的效果。