ウィジェットの並べ方を指定するには、 パレットのレイアウト(Layoutでは以下 の8種類)を配置する。 ①Line Layout(Vertical) ②Line Layout(Horizontal) ③Relative Layout ④Frame Layout ⑤Include Other Layout ⑥Fragment ⑦Table Layout ⑧Table Row なお、Absolute Layoutは プログラムで指定 5.基本API 5-1 レイアウト パレットのそれぞれをドラッグ (Absoluteを除く) Line Layout(Vertical) (1)主なレイアウト指定 Line Layout(Horizontal) 9:00 (0) Relative Layout 9:00 (0) (1) 9:00 (2) (0) (1) 0の下 (1) (2) 1の右 (3) 2の下 (2) (3) 9:00 ヘッダ Absolute Layout Table Layout Frame Layout 9:00 (0, 0) (1, 0) (2, 0) (0, 1 (1, 1) (2, 1) (0, 2) (1, 2) (2, 2) (0,3) (1, 3) (2, 3) 9:00 40 (20, 40) 120 (20, 120) フッタ 20 (2)簡単な例(4.2節の例に新しいボタンウィジェットを追加) A. Linear Layout(Horizontal)の配置 ①パレットの「レイアウト」「Linear Layout(Horizontal)」を、レイアウト内にドラッギングする。 ②Linear Layout(Horizontal)の枠組みが青色線で表示される。 ①ここで左ボタンを押して クリックしたまま ②左ボタンを離すと 青い枠線が表示される。 (ドラッギングしているところ) B. ウィジェットの移動 ①移動したいウィジェットをLinear Layout(Horizontal)の青色枠線内にドラッギング。 ②左ボタンを離すと青い枠線内にウィジェットが移動している。 ①移動したいウィジェット を選んで押したまま ②左ボタンを離すと 青い枠線が表示される。 (ドラッギングしているところ) C. 新しいボタンウィジェットを配置 ①移動したいウィジェットをLinear Layout(Horizontal)の青色枠線内にドラッギング。 ②配置が終わったら、右ボタンをクリックしてポップアップメニューから、「表示」「プロパ ティ」を選択してプロパティリストを表示しておく。 ①配置したいウィジェットを ドラッギング ②左ボタンを離すと 青い枠線が表示される。 D. 「On Click」プロパティにイベントハンドラの関数名を入力 ①「On Click」プロパティにイベントハンドラの関数名を入力。 (最初のボタンのイベントハンドラと異なる関数名にする) ①イベントハンドラの関数名入力 E. ソースプログラムの入力 package jp.Eclipse; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.Gravity; import android.widget.TextView; import android.widget.Toast; public class Test01Activity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } public void onAction(View view){ TextView text1=(TextView)this.findViewById(R.id.text1); text1.setText("OK!"); } public void onAction2(View view){ Toast myToast=Toast.makeText(this,“トーストで表示”, Toast.LENGTH_LONG); myToast.setGravity(Gravity.CENTER,0,0); myToast.show(); } } F. 実行(2.4参照) 左のボタンをクリックしたときと、右のボタンをクリックしたときの 動きが異なることに注意。 (3)動的なレイアウト A. プログラム例(必ずしもXMLは必要ない) package jp.eclips; import import import import // EditText の生成と配置 edit1 = new EditText(this); edit1.setTextSize(20); layout.addView(edit1); // Button の生成と配置 button1 = new Button(this); button1.setText("ここをクリック"); layout.addView(button1); // ボタンのイベント処理 button1.setOnClickListener (new View.OnClickListener() { public void onClick(View v) { Toast toast=Toast.makeText(activity, “入力文字列 : ” + edit1.getText(), Toast.LENGTH_LONG); toast.show(); } }); } android.app.Activity; android.os.Bundle; android.view.View; android.widget.*; public class NonXMLActivity extends Activity { private TextView text1; private EditText edit1; private Button button1; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final Activity activity = this; // ListView の生成と配置 LinearLayout layout = new LinearLayout(this); layout.setOrientation(LinearLayout.VERTICAL); this.setContentView(layout); // TextView の生成と配置 text1 = new TextView(this); text1.setText("動的ウィジェットの配置"); text1.setTextSize(20); layout.addView(text1); } 実行しているところ B. 実行例 C. レイアウトファイルが用意されている理由 ①画面デザインをやりやすくするため。 ②レイアウトを修正するのにプログラムを修正する必 要がない。 ③通常は、画面デザインはデザイナーに、コードはプ ログラマにと作業分担することが多い。 (4)イベントリスナによるイベント処理 A. イベントリスナを使う ① 「On click」プロパティにメソッド名を設定する方法では、On Clickイ ベント以外が使えない。 ② 本来のJavaのイベント処理は、イベントリスナを定義して組み込むとい う方法(デリゲートイベントモデル)である。 ③ Androidの場合、クリック時のイベントハンドラは、Viewクラスの内部 インターフェースとして組み込まれているので、以下をimportする。 android.view.View.OnClickListener ④ イベントハンドラのメソッドは以下のとおり。 public void onClick(View v){ /* クリックのとき実行する処理 */ } ⑤ 次のようにして組み込む [ウィジェット】.setOnClickListener(【View.OnClickListener】); package jp.eclipse; B. 組み込み例 import android.app.Activity; (「On Click」プロパティは消去) import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class ListenerTestActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final Activity activity =this; Button button = (Button)this.findViewById(R.id.button1); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast toast = Toast.makeText(activity,“リスナによる実行”, Toast.LENGTH_LONG); toast.show(); } }); } } Java 1.6で実行すること C. 実行例 (5)リスナクラスを実装する方法 A. 方法の手順 ① リスナクラスを「implements」で実装する。 ② そのリスナをボタンのリスナとして登録する。 Public void onCreate(・・・){ ・ ・ ・ 【ウィジェット】.setOnClickListener(new 【リスナクラス名】()); } class 【リスナクラス名】 implements OnClickListener{ public void onClick(View v){ /* クリックされたときの処理 */ } リスナ登録 } ボタンがクリックされたとき 呼び出されるメソッド リスナクラスの宣言 package jp.eclipse; B. 組み込み例(その1) import android.app.Activity; (例は動的配置とくみあわせている) import android.os.Bundle; import android.view.*; import android.view.View.OnClickListener; import android.widget.*; public class ImplementSampleActivity extends Activity { /** Called when the activity is first created. */ TextView textV; Button button; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout LL=new LinearLayout(this); LL.setOrientation(LinearLayout.VERTICAL); setContentView(LL); textV=new TextView(this); textV.setText("いらっしゃいませ!こんにちは"); button=new Button(this); button.setText("注文"); LL.addView(textV); LL.addView(button); button.setOnClickListener(new buttonClickListener()); } 組み込み例(その2) (例は動的配置とくみあわせている) class buttonClickListener implements OnClickListener{ public void onClick(View v){ textV.setText("ご注文ありがとうございます。"); } } } Java 1.6で実行すること C. 実行例
© Copyright 2024 ExpyDoc