![](https://blogimg.goo.ne.jp/thumbnail/08/de/c28a97be7b3c2f85563742a6ebb2ae62_s.jpg)
AndroidはじめてなのにいきなりOpenGL ESから
入ろうとしてたのが間違いだと思い、
とりあえずいろいろ機能確認してみることに。
日経ソフトウェア2010年1月号を参考に、簡単なコードを書いてみました。
1番下のボタンをクリックすると、他のUI部品の状態を
エディット・テキスト領域に表示する単純なプログラムです。
結果、画像のようにうまくいきました。
AndroidはJavaベースであり、Javaはかじっているため
「UI部品のインスタンス生成、リスナー設定」
「レイアウトの設定」
「addViewメソッドで部品を追加」
を抵抗なく理解できました。よかった。
地味にちょっと戸惑ったのは、
チェックボックスやトグルボタンの選択を判定するメソッドが、
○○.isSelected()ではなく、○○.isChecked()であった点。
isSelected()メソッドも普通にあったので、isChecked()になかなか気づきませんでした。
isSelected()はフォーカスあたっているかどうかを判定するとかなのかな?
以下にソースコードのメモ。
ここのブログに張り付けるとインデント無くなるの何とかならないかな。
==========================================================================================
package testapp.app;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.*;
import android.widget.*;
public class HelloWorldActivity extends Activity implements OnClickListener, OnKeyListener {
public EditText edit;
public RadioButton radio1, radio2;
public ToggleButton toggle;
public CheckBox checkBox;
public SeekBar seekBar;
public Spinner spinner;
public Button button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//エディットテキスト
edit = new EditText(this);
edit.setText("さんぷる");
edit.setOnKeyListener(this);
//ラジオボタン
RadioGroup group = new RadioGroup(this);
radio1 = new RadioButton(this);
radio1.setText("らじお1");
group.addView(radio1);
radio2 = new RadioButton(this);
radio2.setText("らじお2");
group.addView(radio2);
//トグルボタン
toggle = new ToggleButton(this);
//チェックボックス
checkBox = new CheckBox(this);
checkBox.setText("ちぇっく");
//シークバー
seekBar = new SeekBar(this);
//スピナー
spinner = new Spinner(this);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
adapter.add("あか");
adapter.add("みどり");
adapter.add("あお");
spinner.setAdapter(adapter);
//ボタン
button = new Button(this);
button.setText("ぼたん");
button.setOnClickListener(this);
//レイアウトの設定
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
setContentView(layout);
layout.addView(edit);
layout.addView(group);
layout.addView(toggle);
layout.addView(checkBox);
layout.addView(seekBar);
layout.addView(spinner);
layout.addView(button);
}
//ボタンが押された時の処理
public void onClick(View v){
edit.setText("Button Pushed\n");
//ラジオボタン判定
if (radio1.isChecked()){
edit.append("radio = 1, ");
}else if (radio2.isChecked()){
edit.append("radio = 2, ");
}else {
edit.append("radio = off, ");
}
//トグルボタン判定
if (toggle.isChecked()){
edit.append("toggle = ON");
}else {
edit.append("toggle = OFF");
}
//チェックボックス判定
if (checkBox.isChecked()){
edit.append("check = ON\n");
}else {
edit.append("check = OFF\n");
}
//シークバー判定
edit.append("seek = " + seekBar.getProgress() + ", ");
//スピナー判定
switch(spinner.getSelectedItemPosition()){
case 0:
edit.append("spinner = Red");
break;
case 1:
edit.append("spinner = Green");
break;
case 2:
edit.append("spinner = Blue");
break;
default:
edit.append("spinner = ERR");
}
}
public boolean onKey(View v, int keyCode, KeyEvent event){
if (keyCode == KeyEvent.KEYCODE_ENTER){
return true;
}
return false;
}
}