与 Xcode 一样,Android 中的按下按钮背景更改

Posted

技术标签:

【中文标题】与 Xcode 一样,Android 中的按下按钮背景更改【英文标题】:Pressed button background change in Android as in Xcode 【发布时间】:2013-12-11 09:34:52 【问题描述】:

我想知道有什么方法可以让您自定义的 ImageButton 或 Button 在点击时更改背景。

现在,我知道可以通过 XML 来做这样的事情:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/login_selected" /> <!-- pressed -->
<item android:state_focused="true"
android:drawable="@drawable/login_mouse_over" /> <!-- focused -->
<item android:drawable="@drawable/login" /> <!-- default -->
</selector>

或者在代码中,做这样的事情,onClick:

public void onClick(View v) 
   if(v == ButtonName) 
     ButtonName.setImageResource(R.drawable.ImageName);
   

但是,如果我想这样做,这意味着我必须为一个按钮使用 2 个不同的图像。一种是正常状态,一种是按下状态。 如果我有 100 个不同的按钮,那可能是个问题。 那是 200 张图片,仅用于按钮。 您可以想象一下通过告诉 eclipse 它是一个按钮的能力来节省资源,并且我希望它在我按下它时变得更暗。

所以我问有没有像 Xcode 那样做的方法? 设置按钮的背景或图像,按下时会有点阴影,不改变背景或任何东西,只是有点阴影,

【问题讨论】:

【参考方案1】:

试试这个代码 如果是的名字

是 btn_back.png

制作以下darawble xml文件

btn_semi.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle">
    <solid
        android:color="#50000011" 
        />
    <corners android:radius="10dip"/>
</shape>

btn_background.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_pressed="true" >
        <layer-list>
            <item android:drawable="@drawable/btn_back"></item>
            <item android:drawable="@drawable/btn_semi"></item>
        </layer-list>
    </item>
    <item android:drawable="@drawable/btn_back"></item>
</selector>

在布局中创建一个按钮

<Button
       android:layout_
       android:layout_
       android:background="@drawable/btn_background" 
       />

【讨论】:

【参考方案2】:

您可以尝试使用setAlpha,但它仅适用于 API 11 及更高版本

【讨论】:

以上是关于与 Xcode 一样,Android 中的按下按钮背景更改的主要内容,如果未能解决你的问题,请参考以下文章

Android中的按下状态传播

菜鸟的Xamarin.Forms前行之路——按钮的按下抬起事件的监控(可扩展至其他事件)

按钮停止上的按下(波纹)动画

如何拦截 Windows 中物理电源按钮的按下?

如何处理重叠 Mousareas 中的按下和释放信号?

如何在角度6的按下按钮更改事件?