抽象UI
フレームワークは便利だけれど、縛られると、新しいフレームワークに乗り換えができなくなってしまいます。やっぱり、カッコいいフレームワークが出たら、試して見たいしね。フレームワークとの接点を局所化したいので、抽象UIを作ります。
RPGなので、マップと入力を用意し、抽象UIにつなげます。
public class FundamentalUI {
private Input inputdevice;
private Map dungeon;
FundamentalUI() {
}
public String left() {
return inputdevice.left();
}
public String right() {
return inputdevice.right();
}
public String up() {
return inputdevice.up();
}
public String down() {
return inputdevice.down();
}
public String upperleft() {
return inputdevice.upperleft();
}
public String upperright() {
return inputdevice.upperright();
}
public String lowerleft() {
return inputdevice.lowerleft();
}
public String lowerright() {
return inputdevice.lowerright();
}
public String decision() {
return inputdevice.decision();
}
public Map getDungeon() {
return this.dungeon;
}
}
これを、Activityにつなぎます。
dispatchKeyEventメソッドをオーバーライドします。
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
TextView textView = (TextView) findViewById(R.id.Helloworld);
FundamentalUI fundamentalUI = new FundamentalUI();
if (event.getAction() == KeyEvent.ACTION_UP) {
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_DPAD_UP:
case KeyEvent.KEYCODE_K:
textView.setText(fundamentalUI.up());
return true;
case KeyEvent.KEYCODE_DPAD_DOWN:
case KeyEvent.KEYCODE_J:
textView.setText(fundamentalUI.down());
return true;
case KeyEvent.KEYCODE_DPAD_LEFT:
case KeyEvent.KEYCODE_H:
textView.setText(fundamentalUI.left());
return true;
case KeyEvent.KEYCODE_DPAD_RIGHT:
case KeyEvent.KEYCODE_L:
textView.setText(fundamentalUI.right());
return true;
case KeyEvent.KEYCODE_Y:
textView.setText(fundamentalUI.upperleft());
return true;
case KeyEvent.KEYCODE_U:
textView.setText(fundamentalUI.upperright());
return true;
case KeyEvent.KEYCODE_B:
textView.setText(fundamentalUI.lowerleft());
return true;
case KeyEvent.KEYCODE_N:
textView.setText(fundamentalUI.lowerright());
return true;
case KeyEvent.KEYCODE_DPAD_CENTER:
textView.setText(fundamentalUI.decision());
return true;
default:
break;
}
}
return super.dispatchKeyEvent(event);
}
マップは、1と0の配列とし、画面にとりあえず、表示させています。
5日目へ。