如何在Android中启用TextView边框的动画效果

3

我创建了一个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>
2个回答

0
你可以将TextView包装在FrameLayout中,并将背景分配给它。向TextView添加一个onClick监听器,适当地动画化FrameLayout的背景Drawable的alpha值。您可能需要以编程方式分配背景Drawable以获得一个漂亮且易于引用的参考。
您还需要将TextView的touch DOWN和UP事件转发到FrameLayout上,以使其更改颜色,这意味着还需要为其添加onTouch监听器。我认为促进颜色变化的最简单方法是将android:state_pressed更改为android:state_selected,并在touch DOWN时将FrameLayout设置为true,在touch UP时设置为false。

现在我想起来,你其实可以在 TextView 上完成所有 FrameLayout 的工作 - 没有必要使用两个视图。 - Tom

0

我认为你无法通过xml实现这个功能。创建一个FrameLayout,其中包含一个带有阴影的View作为第一个子元素,以及你的TextView作为第二个子元素。然后使用AlphaAnimation来淡入或淡出带有阴影的View


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接