像游戏画面一样设计可点击单元格的9X9网格打开/关闭的最佳方法是什么?

时间:2012-06-21 08:47:00

标签: android android-layout android-button

在我的Android应用程序中,

我有一个屏幕,其中有一个9X9格的网格(按钮/图像)。

我需要使用两个不同的图像作为背景来指示单元格的选择状态或未选择状态(例如:打开和关闭)。

现在我正在按下按钮,点击按钮,我将按钮的背景图像从开启更改为关闭,反之亦然。

我的问题是,

1. 从“清洁代码”的角度来看,这是处理它的正确方法吗?

2. 有没有更好的方法来完成任务?

(注意:即使已经切换按钮,我也希望保留点击按钮的选项,以备未来功能使用)

谢谢:)

2 个答案:

答案 0 :(得分:1)

你可以选择Button,正如程序员一般,但我建议改为ToggleButton

在Button上使用ToggleButton的好处是你不需要使用任何标志以编程方式维护按钮的状态,以记住用户选择了一次或不是按钮,下面是一个演示代码为了相同:

布局文件夹中的XML

 <ToggleButton
            android:id="@+id/tbApp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/selector_toggle_button"
            android:textOff=""
            android:textOn="" />

Drawable文件夹中的selector_toggle_button.xml

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

获取点击它的Java代码

tbApp.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView,
                    boolean isChecked) {
                                         //if isChecked==true then selected 
                                         //else deselected
                               }
}

答案 1 :(得分:-1)

已回答here

android docs

检查这是否是您要找的