如何为按钮应用彩色动画?

Posted

技术标签:

【中文标题】如何为按钮应用彩色动画?【英文标题】:How to apply the color animation for a button? 【发布时间】:2015-11-21 09:24:13 【问题描述】:

我的 xml 中有一个 LinearLayout。当我单击 LinearLayout 时,我需要特定时间的 onclick 事件的颜色外观。之后,颜色会消失。

holder.ll2.setOnClickListener(new OnClickListener() 

            @Override
            public void onClick(final View v) 
                
                    v.setBackgroundColor(0xFF00FF00);
                    v.invalidate();
                
            
        );

【问题讨论】:

【参考方案1】:

试试这个 在资源文件中创建可绘制文件夹 创建这个 XML 你可以根据你的要求改变它

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_focused="true"
         android:state_pressed="false"
         android:drawable="@drawable/big_box_hover"/>
<item android:state_focused="true"
         android:state_pressed="true"
         android:drawable="@drawable/big_box_hover" /> 
<item android:state_focused="false" 
         android:state_pressed="true" 
         android:drawable="@drawable/big_box_hover" /> 
<item android:drawable="@drawable/big_box" /> 
</selector>

然后 在你的布局中 你可以这样做

<Button
            android:id="@+id/button"
            android:layout_
            android:layout_
            android:layout_marginBottom="6dp"
            android:layout_marginTop="6dp"
            android:descendantFocusability="blocksDescendants"
            android:background="@drawable/dashboardbuttonclick"
            android:gravity="center_vertical" >

【讨论】:

您可以根据您的要求设置drawables,即您按下视图时需要什么样的颜色【参考方案2】:

您可以为此使用 Handler

holder.ll2.setOnClickListener(new OnClickListener() 

            @Override
            public void onClick(final View v)  
                   handler=new Handler();
                   handler.postDelayed(myRunnable, TIME_MILI_TO_SHOW_COLOR_INT);
                  btn.setBackgroundColor(0xFF00FF00);
                
            
        );

Runnable 为那个

 myRunnable=new Runnable() 

            @Override
            public void run() 

                btn.setBackgroundColor(YOUR_DEFAULT_COLOR);
            
        

【讨论】:

【参考方案3】:

这个链接可以帮助你

How to create custom button in Android using XML Styles

基本上,您希望单击按钮声明..单击时应显示不同的颜色,释放时显示原始颜色。可以通过将声明为 xml 的按钮定义然后将该 xml 设置为按钮背景来完成。

【讨论】:

我想在点击事件完成后点击线性布局时显示颜色外观,颜色也消失了 当我点击一个按钮时,我需要背景的颜色效果,然后它就会消失【参考方案4】:

试试这个代码

Button btn = (Button)this.findViewById(R.id.btn1);
//Let's change background's color from blue to red.
ColorDrawable[] color = new ColorDrawable(Color.BLUE), new ColorDrawable(Color.RED);
TransitionDrawable trans = new TransitionDrawable(color);
//This will work also on old devices. The latest API says you have to use setBackground instead.
btn.setBackgroundDrawable(trans);
trans.startTransition(5000);

【讨论】:

如何在android中显示clickevent颜色效果? 只需在按钮点击时调用此方法 我需要特定时间的彩色动画,我正在使用 onclick 进行布局 这里 5000 是时间...在中间时间颜色从蓝色变为红色 之后我的背景颜色会消失

以上是关于如何为按钮应用彩色动画?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 QPushButton 的背景颜色设置动画(动态更改按钮颜色)

当UIVIew隐藏在sameView中时,如何为UIview设置动画

如何为可扩展的 Flutter 小部件设置动画以将其滑出屏幕

如何为具有约束的 UIView 设置动画?

如何为 iphone 应用程序设置动画以逐字显示文本?

您如何为视图填充的变化设置动画?