Android 仅用一个字母缩放动画?
在我的活动中有一个单词“Ecl pse”和一个按钮。在我点击按钮后,我希望字母“I”看起来大,然后变小,直到它和单词Ecl pse的其他字母一样大。瞬间,整个单词Eclipse都会受到缩放动画的影响。所以当我点击按钮后,整个单词Eclipse看起来越来越大,越来越小。但我只希望字母“I”缩放动画。这是怎么回事Android 仅用一个字母缩放动画?,android,eclipse,android-animation,Android,Eclipse,Android Animation,在我的活动中有一个单词“Ecl pse”和一个按钮。在我点击按钮后,我希望字母“I”看起来大,然后变小,直到它和单词Ecl pse的其他字母一样大。瞬间,整个单词Eclipse都会受到缩放动画的影响。所以当我点击按钮后,整个单词Eclipse看起来越来越大,越来越小。但我只希望字母“I”缩放动画。这是怎么回事 public Button btn; public TextView tw; Animation a; @Override protected void onCreate(Bundle
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);
可以通过将(带标记的文本)与组合来实现此目的,以随时间更新所需零件的相对大小。例如:
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();
ValueAnimator animator=新的ValueAnimator();
设置持续时间(4000);
setObjectValues(“Ecl pse”、“Eclipse”);
animator.setEvaluator(新的TypeEvaluator()
{
@凌驾
公共字符序列求值(浮点分数、字符序列起始值、字符序列结束值)
{
浮动相对尺寸=4-3*分数;
Spannable span=新SpannableString(“Eclipse”);
span.setSpan(新的RelativeSizeSpan(relativeSize),3,4,span可启用的.span_独占性span_独占性);
返回跨度;
}
});
addUpdateListener(新的AnimatorUpdateListener()
{
@凌驾
动画更新上的公共无效(ValueAnimator动画)
{
textView.setText((CharSequence)animation.getAnimatedValue());
}
});
animator.start();
这将显示一个4倍于周围文本大小的“i”,然后将其变小,直到与其他文本大小相同。您可以自定义持续时间、插值器和c以达到您想要的效果。为什么不为“i”使用单独的文本视图?很难将i置于Ecl和pse之间,因为它与其他字母处于相同的距离?!我不知道它是如何工作的…thx,但有了这个代码,不仅I变大变小,而且整个单词Ecl pse的位置也发生了变化。它下降然后回到原点?!这取决于TextView的textAlignment及其LayoutParams中的高度值(可能是WRAP_内容——随着文本变大,视图大小也会变大)。您应该能够通过更改这些参数来修复它。好的,但是是否不可能使用我的代码并将其稍微不同?我不这么认为。缩放动画适用于整个视图。是否可以给“i”另一种颜色?