最近看到一个小工具,可以实现自定义按钮功能,觉得挺有趣的,于是就思考了下实现思路。
现在想到的一种思路是:
1.所有功能对应一个int型数值标记
2.用一个map来把按钮的标示和按钮当前的功能联系起来,功能与1里面给出的对应
3.点击按钮时,根据按钮标示取得对应的功能数值,然后去执行相应的function
一个简单的例子:
public class OnMainButtonClickListener implements OnClickListener {
public static enum enumFuncTag {
func_new, func_help,
func_reserved
};
// 保存btn和func的对应关系
private Map<Integer, enumFuncTag> mBtnFuncMap = new HashMap<Integer, enumFuncTag>();
public OnMainButtonClickListener(Button[] btns) {
// 设置默认对应关系
for (int j = 0; j < btns.length; j++) {
mBtnFuncMap.put(btns[j].getId(), enumFuncTag.func_reserved);
}
}
// 设置对应关系
public void setBtnFunc(int btnID, enumFuncTag funcTag) {
mBtnFuncMap.put(btnID, funcTag);
}
// 获取对应关系
public enumFuncTag getFuncByBtnID(int btnID) {
return mBtnFuncMap.get