Android 表格行的淡出动画

发布于 2024-10-31 14:06:46 字数 696 浏览 4 评论 0原文

我有一个带有 TextViewTableRow。这是它的 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>

我想通过按钮触摸时的淡出效果使表格行不可见,反之亦然。我该怎么做呢?

I have a TableRow with a TextView. Here is the xml for it.

<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>

I want to make the table row invisible with fadeout effect on a button touch and vice versa. How can I do it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一场春暖 2024-11-07 14:06:46

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

<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。如果您需要用它做其他事情,您可以,但仅设置可见性,将其保留为视图就可以了。然后只需构造一个按钮单击方法,如下所示:

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

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

希望有帮助!

Any View (TableRow included) can have a fade animation attached to it, but you'll need to be able to reference your view in code, so the row will need an id:

<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>

Now you can reference the row itself in your Java code somewhere (like onCreate() perhaps) as

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

Notice I don't cast it as a TableRow. You could if you need to do other things with it, but for just setting visibility leaving it as a View is fine. Then just construct a button click method like this:

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

Fade in and Fade out are standard animations defined in the Android package, you don't need to create them yourself, just load them using AnimationUtils.loadAnimation(). In this example, the clicking the same button just toggles between fade in and fade out depending on whether or not the View is already visible.

Hope that Helps!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文