我有一个LinearLayout,其中包含一些textViews和按钮。 textView中的文本大于视图。我的愿望是对这些文本视图执行TranslateAnimation,以使其从右侧快速滚动,然后退出左侧。

问题是,如果文本最初大于视图,则文本将被裁剪。我首先看了这篇文章here,但是文本被裁剪了。我已经使文本可滚动,并且行得通。但是,它取决于用户实际滚动它。我也尝试过跑马灯,但是没有达到我想要的效果。

这是布局代码的一部分:

          <TextView
         android:text="@string/try_your"
         android:id="@+id/textView2"
         android:layout_height="wrap_content"
         android:layout_width="wrap_content"
         android:layout_gravity="center"
         android:layout_marginBottom="5dip"
         android:paddingBottom="25dip"
         android:textSize="24sp"
         android:textStyle="bold"
         android:singleLine = "true"
     />


这是TranslateAnimation的代码:

public void performLineAnimation1(int fade) {

    View think_you = findViewById(R.id.textView4);
    TranslateAnimation slide = new TranslateAnimation(600.0f, -400.0f, 0.0f, 0.0f);


    slide.setDuration(7000);
    think_you.startAnimation(slide);

    ((TextView) think_you).setTextColor(getResources().getColor(R.color.white));

    //slide.setFillEnabled(true);

}


我什至试图通过让onDraw方法以较小的像素(sp)绘制textView,然后在以后放大它来“欺骗”它,但这是行不通的。

TranslateAnimation具有我想要的效果,但我无法使其正常工作。有人有什么建议吗?

非常感谢。

里克

最佳答案

好,这就是我所做的

我将布局代码更改为:

    <TextView
         android:text=""
         android:id="@+id/textView2"
         android:layout_height="wrap_content"
         android:layout_width="wrap_content"
         android:layout_gravity="center"
         android:layout_marginBottom="5dp"
         android:paddingTop="25dp"
         android:paddingBottom="100dp"
         android:textSize="12sp"
         android:singleLine = "true"
         android:scrollHorizontally="true"
         android:textColor="@color/clear"
     />


和Java代码可以:

        Animation a = AnimationUtils.loadAnimation(this, R.anim.translatescale);
        Think_you.startAnimation(a);
    a.setFillAfter(true);`


translationscale.xml

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

<translate
    android:fromXDelta="100%"
    android:toXDelta="-120%"
    android:fromYDelta="0%"
    android:toYDelta="0%"
    android:duration="10000"
    android:zAdjustment="top" />
<scale

    android:fromXScale="1.0"
    android:fromYScale="1.0"
    android:toXScale="2.0"
    android:toYScale="2.0"
    android:duration="3"></scale>

</set>


因此,我所做的工作有点笨拙……我将文本的尺寸缩小了一些,以使其适合要显示在其中的视图。然后,我使用了一个动画集来执行缩放和TranslateAnimation。我制作了缩放动画,使文本达到所需的大小,然后让它执行得非常快(3 mS),然后按照我的意愿执行了translateAnimation。这些作品,但似乎很笨拙。但是我找不到另一种方法-做一个字幕,使某些东西可滚动-似乎没有。

如果有人有其他解决方案,我也不会介意。

但是,在动画制作之前,屏幕的右侧会有一个小故障,但我愿意忍受。

谢谢,

里克

关于android - 如何执行大于 View 的textView的TranslateAnimation,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7004861/

10-12 04:12