如何执行大于视图的textView的TranslateAnimation

时间:2011-08-10 01:11:12

标签: android

我有一个包含一些textView和按钮的LinearLayout。 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具有我想要的效果,但我无法让它发挥作用。有人有什么建议吗?

非常感谢。

瑞克

1 个答案:

答案 0 :(得分:2)

好的,这就是我做的,

我将布局代码更改为:

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

translatescale.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。这些作品,但似乎相当狡猾。但我找不到另一种方法 - 做一个选框,制作可滚动的东西 - 似乎没有这样做。

如果有人有另一种解决方案,我不介意听到它。

然而,在动画制作之前,屏幕右侧会出现快速故障,但我愿意接受它。

谢谢,

瑞克