Android 使用动画更改textview的背景色

Android 使用动画更改textview的背景色,android,animation,android-animation,textview,Android,Animation,Android Animation,Textview,我正在开发一个android应用程序,我想在一个圆形区域中显示字母,我还需要圆形区域为白色,字母具有我的应用程序的原色 这是我的文本视图: 这是填充圆的代码: 问题: 单击字母表的每个文本区域时,白色应淡出,主色应淡入,并带有动画。 有人能帮忙,在安卓4及以上版本的动画库的帮助下完成这项工作吗 我目前正在尝试用另一个资源替换textview的背景,并将动画应用到其中,但我完全愿意接受任何新的建议和新的执行方式, 我也在上面提供了我当前的代码,但请告诉我是否必须进行根本性的更改或修改才能使其与动画

我正在开发一个android应用程序,我想在一个圆形区域中显示字母,我还需要圆形区域为白色,字母具有我的应用程序的原色

这是我的文本视图:

这是填充圆的代码:

问题: 单击字母表的每个文本区域时,白色应淡出,主色应淡入,并带有动画。 有人能帮忙,在安卓4及以上版本的动画库的帮助下完成这项工作吗

我目前正在尝试用另一个资源替换textview的背景,并将动画应用到其中,但我完全愿意接受任何新的建议和新的执行方式,
我也在上面提供了我当前的代码,但请告诉我是否必须进行根本性的更改或修改才能使其与动画库一起工作?

我建议您执行以下操作:

不要试图在一个可绘制的背景中设置所有内容的动画。您需要:

<FrameLayout>
  <View/> //Just a view with your white circular background
  <View/> //Another view with circular background, but this one is gonna display the color
  <TextView/> //Centered, your alphabet letter
</FrameLayout>
因此,您希望将所有这些放在自定义视图中。白色圆形背景视图将保持不变。可以使用第二个圆形视图设置字母表的字母颜色。例如,有很多简单的方法可以从自定义可绘制列表层中的层更改颜色

首次充气自定义视图时,需要将彩色圆形视图的可见性设置为“不可见”。白色的圆形视图将保持可见。文本视图始终位于顶部

重写生成自定义视图的onClick方法以实现view.OnClickListener,您应该将运行动画的代码放在那里。您需要做的唯一一件事是对彩色圆圈视图进行alpha动画,并且在onAnimationEnd挂钩中,您应该将视图的可见性设置为visible。您需要在自定义视图中使用一个布尔变量来跟踪是否显示彩色圆。这样,如果正在显示彩色圆圈视图,并且用户单击了该视图,则可以执行反向动画以仅显示白色圆圈视图

记住在自定义视图中执行所有这些操作,以保持其整洁。还记得添加几个自定义属性,这样您就可以仅从xml设置彩色圆圈视图的颜色


我希望这能给你一个如何实现它的想法,IDK确实有时间举个例子,但是如果你在某个地方卡住了,或者你没有理解我说的话,请告诉我。

此外,你可以在框架布局中添加涟漪效应,只是为了更酷;感谢你提供的链接非常有用,我采用了相同的解决方案并进行了转换,现在它工作得非常完美!
<?xml version="1.0" encoding="utf-8"?>
 <shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="oval" >
    <stroke android:width="1dp" android:color="@color/colorPrimaryDark" />
    <gradient android:startColor="@color/white" android :endColor="@color/white"
    android:angle="270"
      />
 </shape>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
  android:shape="oval" >
  <stroke android:width="1dp" android:color="@color/colorPrimaryLight" />
   <gradient android:startColor="@color/colorPrimaryLight" 
      android:endColor="@color/colorPrimaryLight"
    android:angle="270"
    />
</shape>
 @Override
public void onClick(View v) {


}
<FrameLayout>
  <View/> //Just a view with your white circular background
  <View/> //Another view with circular background, but this one is gonna display the color
  <TextView/> //Centered, your alphabet letter
</FrameLayout>