Android 如何在 textview 边框上启用动画

How to enable the animation on textview borders in Android

我创建了一个 XML 文件,可以在单击时启用 textview 边框更改颜色。现在我想添加另一个羽毛,使边框逐渐消失。我该怎么做?

这是 XML 代码。

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

    <item android:state_pressed="true">
        <shape android:shape="rectangle">
            <solid android:color="@color/textbox" />
            <stroke android:width="5dip" android:color="@drawable/border_pressed" />
            <corners android:radius="5dp" />
        </shape>    
    </item>    

    <item android:state_pressed="false">
        <shape android:shape="rectangle">
            <solid android:color="@color/textbox" />
            <stroke android:width="5dip" android:color="@drawable/border_unpressed" />
            <corners android:radius="5dp" />
        </shape>
    </item>

</selector>

我认为 xml 无法做到这一点。创建一个 FrameLayout,它有一个 View,影子作为第一个 child,你的 TextView 作为第二个。然后使用 AlphaAnimation 淡出或在 View 中使用阴影。

您可以将您的 TextView 包裹在一个 FrameLayout 中,它已分配了您的背景。向您的 TextView 添加一个 onClick 侦听器,它可以适当地为您的 FrameLayout 背景 Drawable in/out 的 alpha 设置动画。您可能希望以编程方式分配背景 Drawable,以便轻松引用它。

您还需要将触摸向下和向上事件从您的 TextView 转发到 FrameLayout 以使其改变颜色,这意味着还要向其添加一个 onTouch 侦听器。我认为促进颜色变化的最简单方法是将 android:state_pressed 更改为 android:state_selected 并将 FrameLayout 上的 selected 设置为 true on touch DOWN,false on touch UP.