Android为tablerow淡出动画

时间:2011-04-08 12:50:55

标签: android animation invisible fadein fadeout

我有TableRow TextView。这是它的xml。

<TableRow
    android:layout_height="fill_parent" 
    android:layout_gravity="bottom"
    android:layout_width="fill_parent"
    android:background="#BF000000">

    <TextView
        android:id="@+id/topText"
        android:layout_height="wrap_content"
        android:textColor="#FFFFFF"
        android:textSize="19sp"
        android:background="#BF000000"
        android:layout_gravity="center_horizontal"
        android:text="@string/text_searchword"
        android:layout_width="fill_parent">
    </TextView>

</TableRow>

我想使表格行在按钮触摸时具有淡出效果,反之亦然。我该怎么办?

1 个答案:

答案 0 :(得分:15)

任何View(包括TableRow)都可以附加淡入淡出动画,但您需要能够在代码中引用您的视图,因此该行需要一个ID:< / p>

<TableRow
  android:id="@+id/my_row"
  android:layout_height="fill_parent" 
  android:layout_gravity="bottom"
  android:layout_width="fill_parent"
  android:background="#BF000000">
  <TextView
    android:id="@+id/topText"
    android:layout_height="wrap_content"
    android:textColor="#FFFFFF"
    android:textSize="19sp"
    android:background="#BF000000"
    android:layout_gravity="center_horizontal"
    android:text="@string/text_searchword"
    android:layout_width="fill_parent">
  </TextView>
</TableRow>

现在你可以在某个地方的Java代码中引用行本身(或许像onCreate()那样)

View row = findViewById(R.id.my_row);

请注意,我不会将其转换为TableRow。如果你需要用它来做其他的事情,你可以,但只是设置可见性,将它留作View是很好的。然后构建一个按钮单击方法,如下所示:

public void onClick(View v) {
    View row = findViewById(R.id.myrow);
    if(row.getVisibility() == View.VISIBLE) {
        row.startAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));
        row.setVisibility(View.INVISIBLE);
    } else {
        row.startAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));
        row.setVisibility(View.VISIBLE);
    }
}

淡入和淡出是Android程序包中定义的标准动画,您无需自己创建它们,只需使用AnimationUtils.loadAnimation()加载它们即可。在此示例中,单击同一按钮只是在淡入和淡出之间切换,具体取决于视图是否已经可见。

希望有帮助!