アンドロイドのGUI作成なんて怖くない! In 第5回勉強会@徳島/オープンフォースAndroid勉強会 201007 at 2010/07/15(sut) 夜子まま 自己紹介 ハンドルネーム 夜子まま Android暦 4ヶ月 マーケット登録 5個 Java暦10年ちょい 主にオープン系 JWSを3年ほど 目次 前説 レイアウトの説明 よく使うレイアウトを三つほど 配置で使えるテクニックの紹介 クラスの作成 Activityの説明 ライフサイクル ListViewの説明 あと何か 前置き 癖のあるGUI作成 Swing Eclipse HTML 説明開始 では早速 いってみましょう 画面を作る流れ 1 レイアウトファイルを作 成する 2 Activityを継承したクラ スを作成する 3 作ったクラスを AndroidManifest.x mlに定義する アプリを構成するファイルたち layout assets values src R drawable gen マニフェスト apk まずは画面デザインから Button ・・・ ボタン CheckBox ・・・ チェックボックス EditText ・・・ 編集ボックス RadioButton ・・・ ラジオボタン ImageButton ・・・ イメージボタン Spinner ・・・ すぴなー Seekbar ・・・ シークバー ZoomControls ・・・ ズームコントロール レイアウトをマスターしなきゃ始まらない LinerLayout ・・・ 連続して並べる配置 TableLayout ・・・ 行・列揃えした配置 FrameLayout ・・・ 重ねた配置 RelativeLayout ・・・ 相関した配置 AbsoluteLayout ・・・ 絶対座標の配置 dip (デバイスに依存しないピクセル) sp (拡大縮小されたピクセル、テキストサイズに最適) よく使うレイアウト(LinerLayout) <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="hello" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="hello" /> </LinearLayout> よく使うレイアウト( TableLayout) <TableLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <TableRow> <TableRow> <EditText android:text="test" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </TableRow> </TableLayout> よく使うレイアウト( FrameLayout) <FrameLayout android:id="@+id/FrameLayout01" android:layout_width="wrap_content" android:layout_height="wrap_content"> <ImageView android:src="@drawable/penguins" android:scaleType="fitStart" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:text="あいうえお" android:layout_marginTop="10dip" android:textSize="40sp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </FrameLayout> レイアウト配置テクニック1 gravityをつかって位置合わせ <LinearLayout android:orientation="horizontal" android:gravity="center_horizontal" android:layout_width="fill_parent " android:layout_height=“fill_parent” > <Button android:text="ボタン" android:layout_gravity="right" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> android:layout_gravity と android:gravity の使い分け Top Left Right center_horizontal center_vertical fill Bottom レイアウト配置テクニック2 Weightをつかって均等貼り付け <Button android:text="test1" android:layout_weight="1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:text="test2" android:layout_weight="1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:text="test3" android:layout_weight="1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> レイアウト配置テクニック3 スペーサーを使う <LinearLayout android:layout_weight="1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:text="test1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <LinearLayout android:layout_weight="1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:text="test3" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <LinearLayout android:layout_weight="1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> 次はListView レイアウトを作ったら? Activity ・・・ 画面の基本 PreferenceActivity ・・・ 設定画面 TabActivity ・・・ タブ画面 ListActivity ・・・ リスト画面 Etc ・・・ Activityのライフサイクル onSaveInstanceState 開始 実行中 onCreate Backボタンや他の Activityが表示される onPause 長時間表示されない onStart onStop onRestoreInstanc eState onResume onDestory 回転すると一旦Destoryされる onRestart Homeはstopまで 終了 処理を実装しよう OnCreateで初期化処理 OnResumeで設定処理 Buttonイベントで処理を実装 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.people_list); } srchText = (EditText) this.findViewById(R.id.srchText); srchText.setOnLongClickListener(new OnLongClickListener() { @Override public boolean onLongClick(View v) { srchText.setText(""); return false; }}); ListViewを制するものAndoridを制す ListViewはほとんどのアプリで利用します、 だけど難しいんだよね。 ListViewを構成するクラス ListView Adapter BaseAdapter ・・・ アダプターの抽象クラス CursorAdapter ・・・ Cursorをもつアダプター ArrayAdapter ・・・ 任意のリストのアダプター SimpleAdapter ・・・ 基本的なアダプター Binder SimpleAdapter等の拡張 ListViewのカスタマイズ AdapterのgetViewで表示するViewを生成する。 LayoutInflater layoutInflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); からの public View getView(int position, View view, ViewGroup parent) { Peopleinfo inf = this.getItem(position); if (view == null) { view = layoutInflater.inflate(R.layout.fortune_row, null); } CursorViewの場合はこっち @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { return null; } ListViewの動作 Adapter getView ListViewでコレを使いこなせ public void setTag (Object tag) public void setTag (int key, Object tag) public Object getTag () public Object getTag (int key) ListView Event処理 ListViewの前後につけるもの HeaderViewとFooterView 使い道? もっと読む や、 読み込み中 等 LayoutInflater layoutInflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); からの view = layoutInflater.inflate(R.layout.fortune_row, null); 時間確認 時間は? 時間確認 まだある 総合演習 最後にまとめとしてアプリを作り たいと思います 総合演習 今日のためにとっておきのアプリ を準備しました 総合演習 その名も! 総合演習 告白スイッチ!! アプリをつくっちゃお 1 2 3 4 誰でも告白できる まさかのときでも だから安心 とにかく迷わない アプリをつくっちゃお それでは作りましょう まずは画面デザインから アプリをつくっちゃお main.xml アプリをつくっちゃお KokuhakuAct.java アプリをつくっちゃお AndroidManifest.xml 完成! 質問があれば 質問受付中
© Copyright 2024 ExpyDoc