gpt4 book ai didi

android - eclipse 安卓 : I want a letter appear firSTLy bigger and then getting smaller

转载 作者:行者123 更新时间:2023-11-30 02:52:50 24 4
gpt4 key购买 nike

在我的 Activity 中是一个内容为“Ecl pse”的 TextView,其中缺少“i”。单击按钮后,我希望字母“i”出现在正确的位置。但是“i”应该如此生动,以至于在我单击按钮后它首先看起来有点大然后变小直到它和其他字母一样大。但是在我的代码中,整个单词“Ecl pse”瞬间受到了 ValueAnimation 的影响。不仅是我点击按钮后“i”变大变小了,而且整个单词“Ecl pse”的位置也发生了变化:“Ecl pse”先往下走,然后又回到原来的位置。我该如何解决?同样,我只希望字母“i”在我单击按钮后看起来大一点,然后变小,直到它与单词“Ecl pse”的其他字母一样大...

XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >



<TextView
android:id="@+id/tvhallo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="87dp"
android:text="Ecl pse"
android:textSize="70sp" />

<Button
android:id="@+id/BtnKlick"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="Klick" />

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/tvhallo"
android:layout_alignBottom="@+id/tvhallo"
android:layout_alignLeft="@+id/BtnKlick"
android:layout_toLeftOf="@+id/BtnKlick"
android:text="i"
android:textSize="70sp" />

</RelativeLayout>

代码:

public Button btn;
public TextView tw;

@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);

btn.setOnClickListener(this);}

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

ValueAnimator animator = new ValueAnimator();
animator.setDuration(2000);
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)
{
tw.setText((CharSequence)animation.getAnimatedValue());
}
});

animator.start();}}

最佳答案

我真的怀疑TextView是您想要实现的目标的正确工具。对于这项工作来说,这既矫枉过正又不合适。它可以显示各种格式的所有文本内容,并且有充分的理由被描述为“一个完整的文本编辑器”。它的主要目的是提供一种显示文本的方法,可能还有很多(那部分是矫枉过正)。插入和(可能)缩放“i”将导致其余字母移动,因为这就是该类的用途。它的目的是布局文本,而不是静态布局,使内容的更改尽可能少地移动(这是不足的部分)

但您真正想要的不是显示文本,而是动画。我建议您在任何具有不同状态的成像程序中创建您想要的文本:一个没有“i”,一些太大并且按比例缩小,以及一个具有正确比例的最终图像。现在使用这些图像来显示按下按钮触发的动画。我相信这个任务的正确类别是 AnimationDrawable ,虽然我自己没用过。确实有很多方法可以获得您想要的确切行为,但我希望这能让您入门!

关于android - eclipse 安卓 : I want a letter appear firSTLy bigger and then getting smaller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23832768/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com