在文本视图中淡入时滑入

时间:2013-11-07 19:36:48

标签: java android android-animation

如何组合XML动画以实现以下效果:

enter image description here

1 - > 2(在TextView中淡入时滑入)

我的部分XML代码是:

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:orientation="horizontal"
    android:layout_weight="1" >

    <TextView
        android:id="@+id/tvData"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:text="TYPE:"
        android:gravity="center"
        android:textStyle="bold"
        android:textSize="@dimen/info_height"
        android:shadowDx="4"
        android:shadowDy="4"
        android:shadowColor="#A7A7A7"
        android:shadowRadius="15" />
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:orientation="horizontal"
        android:layout_weight="1"
        android:padding="@dimen/about_divider_height" >
        <TextView
            android:id="@+id/tvBloodDetail"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:background="@drawable/roundtv"
            android:text=""
            android:gravity="center"
            android:textSize="@dimen/btn_text"
            android:textStyle="bold"
            android:shadowDx="8"
            android:shadowDy="8"
            android:shadowColor="#CC900205"
            android:shadowRadius="25"
            android:textColor="#FFFFFF"
            android:visibility="invisible" />
    </LinearLayout>
</LinearLayout>

Java的一部分:

private Runnable task = new Runnable() { 
        public void run() {
            //run the animated task
            tvB.setAnimation(animationTranslateIn);
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.bloodtype);

            tvB = (TextView) findViewById(R.id.tvBloodDetail);

                animationTranslateIn = AnimationUtils.loadAnimation(BloodType.this, R.anim.slideanim);
        }

我有slideanim xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
   android:interpolator="@android:anim/linear_interpolator" 
   android:shareInterpolator="true">
   <alpha
       android:fromAlpha="1.0"
       android:toAlpha="0.1"
       android:duration="200"
       android:repeatCount="1"
       android:repeatMode="reverse"
       android:startOffset="0" />
   <translate android:duration="2000"
       android:fromXDelta="0"
       android:toXDelta="100%p"
       android:startOffset="0" />
</set>

我如何将上述两者结合起来,甚至不同,以遵循与1&amp; 1相同的过程。 2?

2 个答案:

答案 0 :(得分:6)

将它们放在同一组中,并将它们的起始偏移设置为相同的值:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
   android:interpolator="@android:anim/linear_interpolator" 
   android:shareInterpolator="true">
   <alpha
       android:fromAlpha="1.0"
       android:toAlpha="0.1"
       android:duration="200"
       android:repeatCount="1"
       android:repeatMode="reverse"
       android:startOffset="0" />
   <translate android:duration="2000"
       android:fromXDelta="0"
       android:toXDelta="100%p"
       android:startOffset="0" />
</set>

默认startOffset为0,因此您可以将其删除。如果您不想要,也可以不共享内插器。

请参阅http://developer.android.com/guide/topics/resources/animation-resource.html

答案 1 :(得分:1)

您需要使用“动画集”创建新的动画XML,然后照常应用它。

您可以在每个部件上设置定时偏移。

在开发者网站上做了很好的解释。