Android:为“扬声器打开/关闭”创建一个ImageButton

问题描述

我正在编写一个应用程序,在游戏中会计算并显示分数。

现在,我想借此机会打开/关闭扬声器。我认为,使用ImageButton应该是解决方案。

但是,当扬声器关闭时,如何“调暗”按钮,但必须保持激活状态。隐形或禁用不是解决方案。最好更改按钮中的图像吗?

请问有人有开关“开/关”按钮的示例。

我正在使用AndroidStudio4.1和Kotlin

解决方法

最好有一个复选框,因为该视图默认处理true / false状态。您必须为按钮创建一个可绘制对象,然后将其设置为按钮。

假设您的可绘制对象为cb_selector_sound

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

然后在这样的按钮中使用它:

<CheckBox
    android:id="@+id/soundCheckbox"
    android:button="@drawable/cb_selector_sound"
    .../>

因此,您可以收听复选框的更改

//find the view
soundCheckbox.setOnCheckeChangedListener {_,isChecked ->
    if (isChecked) {
        //turn sound on
    } else {
       //turn sound off
    }

}

因此视图担心外观,您担心逻辑