You can achieve this by combining Spannable (text with markup) with a ValueAnimator to update the relative size of the part you want over time. For example:
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();
This will show an "i" 4 times as large as the surrounding text, then make it smaller until it's the same size as the rest. You can customize duration, interpolator, &c to achieve the effect you want.