2011年12月22日木曜日

OptionsMenu (SubMenu)

メニューボタンを表示するOptionsMenuについては以前ご紹介しました。
今回はそのメニューにサブメニューを追加する方法をご紹介します。


サブメニュー

サブメニューはSubMenuクラスで作ります。SubMenuクラスのオブジェクトをMenuクラスのオブジェクトに追加することで、メニューを階層化することができます。

早速サンプルを作ってみましょう。

2011年12月16日金曜日

HorizontalScrollView

以前、縦にスクロールする「ScrollView」を取り上げました。今回は横スクロールを行なう「HorizontalScrollView」をご紹介します。


横スクロール

HorizontalScrollViewもScrollViewと同様に、1つのオブジェクトに対してのみ使用可能ですので、LinearLayoutをスクロールさせるようにします。LinearLayoutの中に、縦40ピクセル・横80ピクセルのTextViewを横に並べていきます。画面の横幅は320ピクセルですから、4つでいっぱいになり、5つめからは見えなくなります。横幅以上のサイズになると、スクロールバーが表示されます。

Androidプロジェクトの設定
プロジェクト名:HorizontalScrollViewTest1a
ビルドターゲット:Android 2.1-update1
アプリケーション名:HorizontalScrollViewTest1a
パッケージ名:jp.co.triware.samples.HorizontalScrollViewTest1a
アクティビティーの作成:HorizontalScrollViewTest1aActivity
最小SDKバージョン:7

2011年12月9日金曜日

ProgressDialog (バー)

前回からの続きです。

前回は「円」のProgressDialogをご紹介しました。今回は「バー」のProgressDialogです。

画面レイアウトは前回と同じです。

main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <Button
        android:id="@+id/start_btn"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Start ProgressDialog"
        />
</LinearLayout>

2011年12月2日金曜日

ProgressDialog (円)

ダイアログはユーザーにメッセージを伝えたい場合に使いますが、作業中であることを示すものもあります。
前回は前者のAlertDialogを紹介しました。今回は後者のProgressDialogをご紹介しましょう。

ProgressDialogで作業中であることを表現する方法は2つあります。ひとつは、どれくらい時間がかかるかわからない、あるいはどれくらいの処理量があるかわからない場合に円を表示するもの(STYLE_SPINNER)、もうひとつは進捗率をバーで表示するもの(STYLE_HORIZONTAL)です。

まずは円のほうからサンプルを作って行きます。

Androidプロジェクトの設定
プロジェクト名:ProgressDialogTest1a
ビルドターゲット:Android 2.1-update1
アプリケーション名:ProgressDialogTest1a
パッケージ名:jp.co.triware.samples.ProgressDialogTest1a
アクティビティーの作成:ProgressDialogTest1aActivity
最小SDKバージョン:7
ProgressDialogのサンプルは全部で4つあります。プロジェクトの設定は適宜変更してください。

画面レイアウトはすべて同じものを使用します。

main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <Button
        android:id="@+id/start_btn"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Start ProgressDialog"
        />
</LinearLayout>
ボタンをクリックするとProgressDialogを表示します。

2011年11月25日金曜日

AlertDialog

メッセージを表示する方法として、これまではToastを使ってきました。これは一定時間表示するだけですので、ちょっと目を離していたり、読み終わらないうちにメッセージが消えてしまうこともあります。

今回はAlertDialogというダイアログを表示するクラスをご紹介します。


ダイアログを表示する

AlertDialogは、メッセージを表示したり、テキストを入力する際に使用します。以下のサンプルでは、動的にAlertDialogを生成して、メッセージを表示します。

2011年11月16日水曜日

OptionsMenu

今回はメニューボタンを押した時に表示されるオプションメニューです。

一度に表示できるメニューの数は6つまでです。それ以上メニューがある場合は左(左下)のメニューが「その他」に変わり、それをクリックすると残りのメニューの一覧が表示されます。メニューがたくさんある場合は、あまり使わないものを6番目以降にすると良いでしょう。

条件や状態によって表示するメニューを動的に変更することもできます。

起動時にonCreateOptionsMenu()が呼び出されます。そして、メニューボタンを押した場合はonPrepareOptionsMenu()が呼び出されます。以下のサンプルでは、このメソッドを使い分けることで、メニュー数が固定の場合と可変の場合に対応しました。これらのメソッドの戻り値は基本的にはtrueです。falseを返すとメニューを表示しません。


固定メニュー(onCreateOptionsMenu()で生成)

メニューの数や並び等を変更しない場合は、最初に生成しておきます。
メニュー作成のコードはonCreateOptionsMenu()に記述します。

2011年11月11日金曜日

実機でのアプリ動作確認方法

これまで、サンプルプログラムの動作は、AVDを使用した仮想デバイスで行ってきましたが、そろそろ実機での動作確認をしてみたいと思います。ここでは、私が普段アプリケーションの実機動作確認に使用しているNECのMEDIAS N-04Cを使用して説明をすることにします。それでは、以下の順で説明を進めてゆきます。
  •  スマートフォン側の準備
  •  USBデバイスドライバのインストール
  •  実機の接続
  •  デバッグを行うプロジェクトの設定
  •  実機へのアプリケーションインストール


スマートフォン側の準備
  1. まず、設定の画面に入ってください。そして[アプリケーション]を選択します。

2011年11月8日火曜日

Spinner (静的に生成する)

今回も選択肢をポップアップしてその中からひとつ選ぶ方法を紹介します。

前回は動的に生成しましたが、選択肢が固定である場合にはJavaで動的に生成するより、xmlで記述して静的に作成したほうが効率的です。


Spinnerを使う

機能としては前回と同じ内容です。

文字列はstrings.xmlに定数として記述します。文字定数はIDが割り当てられます。JavaからはそのIDを元に文字列を取得して、Adapterにセットします。文字列をstrings.xmlに記述するのは、Adapterに限った話ではありません。

以下のサンプルでは、すべての文字列をxmlに記述するようにしてみました。この手法は、アプリを日本だけでなく海外向けにリリースする際に有用です。多言語対応の具体的な例はまた別の機会に譲るとしましょう。

2011年11月4日金曜日

Spinner

今回は選択肢をポップアップしてその中からひとつ選ぶ方法を紹介します。

SpinnerはAdapterと組み合わせて使います。Adapterに選択肢のデータをセットして、AdapterをSpinnerにセットします。

都道府県をSpinnerで選択して、選択した都道府県名をToastで表示するサンプルを作ります。


Spinnerを使う

Androidプロジェクトの設定
プロジェクト名:SpinnerTest1a
ビルドターゲット:Android 2.1-update1
アプリケーション名:SpinnerTest1a
パッケージ名:jp.co.triware.samples.SpinnerTest1a
アクティビティーの作成:SpinnerTest1aActivity
最小SDKバージョン:7

2011年10月26日水曜日

@Override

今回はAndroidアプリ開発Tipsというより、JavaのTipsです。


@Override

メソッドをオーバーライドする際、メソッドの前に@Overrideというアノテーションを記述すると、オーバーライドしているつもりでも実はできていない(=バグがある)場合にコンパイルエラーが発生します。これにより、メソッド名や引数のスペルミスや、型の間違いを未然に防ぐことができます。

@Overrideは、JDK 1.5とJDK 1.6では若干機能が異なります。JDK 1.5では抽象クラスの拡張には対応していますが、インターフェースの拡張には対応していません。JDK 1.6でインターフェースの拡張にも対応するようになりました。

Eclipseをインストールした状態ではJDK 1.5準拠の設定になっていますので、インターフェースを拡張する際に @Override を付けるとコンパイルエラーが発生します。

EditTextButtonToastCheckBoxRadioGroup & RadioButtonの各記事で、@Overrideをコメントにしていたのはそういう理由からです。

それではRadioButtonTest1bをベースに説明していきます。

2011年10月20日木曜日

RadioGroup & RadioButton

選択肢のなかからひとつだけ選ぶ場合、選択肢をすべて表示しておいてその中から選ぶ方法と、選択中のものだけ表示して、選択するときに選択肢をポップアップする方法があります。今回は選択肢をすべて表示してその中から選ぶRadioGroup/RadioButtonを紹介します。


RadioButtonを使う(失敗例)

本当はRadioButtonを使う場合は、RadioGroupを使ってグループ内でひとつだけ選択する、という書き方にしないといけませんが、ここでは試しにRadioGroupを使わないとどういう結果になるか試してみることにします。

2011年10月17日月曜日

CheckBox

状態のON/OFFを切り替えるにはCheckBoxを使います。例えば、ある機能を有効/無効にする、アイテムの中から複数選択する、といった場合の利用が考えられます。このブログでは「EditText」の記事で「パスワードを表示する/しない」の機能に使いました。


TextViewとCheckBox

まず最初にTextViewとCheckBoxを表示するだけのサンプルプログラムを作ってみます。

2011年10月13日木曜日

Toast

Androidアプリを使っていると、数秒間だけ表示するメッセージ通知を見かけます。これはToast (トースト)といいます。


Toastでメッセージを表示する

Toastはメッセージを表示すると、一定時間が経過すると、メッセージは自動的に消えます。表示するときはフェードイン、消える時はフェードアウトします。

表示する期間(時間)は2秒または4秒です。短いメッセージは2秒でも読めるかもしれませんが、長くなると2秒では読めないかもしれませんので、そういう場合は4秒表示するようにします。

使い方はいたって簡単です。
Toast.makeText(this, "message", Toast.LENGTH_SHORT).show();
これで2秒間、メッセージを表示します。4秒表示する場合は、makeText()の第3引数にToast.LENGTH_LONG を指定します。第1引数はコンテキスト、第2引数は表示する文字列を指定します。

サンプルプログラムは前回の「Button」をご覧ください。

2011年10月11日火曜日

Button

Buttonは、ボタンを押した時に何か処理を実行するために使います。

使い方は、ボタンがクリックされたときにイベントを受け付けるように、リスナーを設定します。
Button btn = (Button)findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // 実行する処理
    }
});
まずfindViewById()メソッドを使って、リソースIDからボタンのインスタンスを取得します。
次にそのボタンに対して、setOnClickListener()メソッドを使ってリスナーを設定し、onClick()メソッドを記述します。


ボタンクリックでメッセージを表示

2011年10月6日木曜日

EditText

テキストを入力するには、EditTextを使います。特定の文字しか入力できないようにしたり、複数行のテキストを入力することもできます。またパスワードを入力する場合は、基本的には伏せ字(*)で表示します。

Androidアプリには「パスワードを表示する」というオプションがあるものもたくさんあります。セキュリティ面から考えると問題があるのですが、誤入力を避けるために用意されているのでしょう。今回はそれに倣ってパスワードを表示したり非表示にするサンプルを用意しました。


テキストを入力する

2011年10月3日月曜日

ニューアストリア

昨日は日曜日でしたが、知り合いのエンジニアと会うために千里中央に出かけました。
少し時間があったので、以前から行きたいと思っていた「ニューアストリア」というお店で軽く食べることに。場所は北大阪急行の千里中央駅のホームの一つ上の階で、ホーム吹き抜けの両サイドの通りにたくさんのお店が並んでおり、その中のお店の一つです。


2011年9月28日水曜日

エミュレータのロケール設定

開発を行うAndroidアプリは、おそらく日本語環境で使用されるものが多いと思います。そこでエミュレータ(AVD)の表示設定を日本語環境として使用できるようにロケールの設定をしておきましょう。
また、システム時刻も日本標準時に合わせましょう。

日本語環境の設定
まず、[MENU]をクリックします。

2011年9月26日月曜日

TextView

画面上に文字列を表示するには、TextViewを使用します。
TextViewは、ラベルとして固定の文字列を表示したり、メッセージを表示するエリアとして使えます。


文字列を表示する

2011年9月22日木曜日

打ち合わせ後のランチ

今日はお客さんと打ち合わせの後、一緒にランチに行ってきました。
お店の名前は「フロインドリーブ」といいます。元々は神戸ユニオン教会だったところで、建物は文化財として指定されているそうです。1階がお店で、2階がカフェになっています。

ScrollView

UIは画面に収まるように作るのが基本ですが、画面に収まらない場合や、件数がかわるデータを表示させたいときはどうすればいいのでしょうか。今回はそれを解決するための「ScrollView」を使ってみましょう。


ScrollViewを使わない場合

まず、縦に収まりきらない画面を作って、どのような表示になるか確かめてみましょう。
"Text 0"から"Text 99"を単純に縦に表示させていきます。1つあたりの高さは40ピクセルです。

2011年9月17日土曜日

LinearLayout (動的に生成する #2)

これまでにLinearLayoutを動的に生成する方法画面のサイズを取得する方法をご紹介しました。今回はそれらを組み合わせて、画面サイズに適したレイアウトにしてみましょう。


画面サイズを考慮しないと…

まずは画面の幅を気にせずに表示するとどうなるか確認します。
文字列の表示にはTextViewを使い、幅は80ピクセルにします。"Text 0"から"Text 19"までを横に並べて表示してみましょう。

2011年9月15日木曜日

Display

LinearLayout (動的に生成する)」では動的に画面レイアウトを作ってみました。次はもう少し発展させて、画面が縦長の場合と横長の場合に表示する内容(件数)を変えてみたいと思います。それには画面の情報を知る必要があります。

今回は画面の情報を取得するためのDisplayクラスについて説明します。


ディスプレイの情報を取得する

Displayクラスは、画面の向き・高さ・幅の情報を取得します。

メソッド取得する情報
getHeight()高さ(縦方向のピクセル数)
getWidth()幅(横方向のピクセル数)
getOrientation()方向(0:縦、1:横)

以下のプログラムでは起動時にディスプレイの情報をデバッガにログ出力します。

2011年9月13日火曜日

明日9月14日から

明日9月14日からリクナビNEXTで中途採用の求人を開始します。
新たなメンバーを迎えて、仕事の幅を広げてゆきたいと思っています。
リクナビNEXTを見られた方は、トライウェアのホームページからこのブログもご覧になると思います。まだブログも始めてからあまり日が経っていませんが、少しでもトライウェアという会社のイメージをつかんでもらえればと思います。


それでは面接でお会いしましょう。

2011年9月12日月曜日

休日のランチ

日曜日は、能勢にドライブ&ランチに行ってきました。
ふだん、画面に向かうことが多いので、お休みの日はゆったりとした時間を過ごしています。

今回ランチを過ごしたのはSoto Dinigというカフェです。「おおさか府民牧場」と「くりの郷」という道の駅を越えてしばらく北に走り、少しそれた道に入っていくと小さな案内が出ています。何気に走っていると見落とすかもしれません。細いあぜ道をあがっていくとそのお店はあります。

Log

デバッグのためのログ出力はLogクラスのメソッドを使用します。

ログ出力には以下の種類があります。
ログレベルメソッド内容
ERRORe()エラーメッセージ
WARNw()警告メッセージ
INFOi()情報メッセージ
DEBUGd()デバッグメッセージ
VERBOSEv()詳細(冗長)メッセージ
例えば、アプリケーションが異常終了する場合はエラーメッセージ、処理は続けられるがおかしなデータである場合は警告メッセージ、端末情報は情報メッセージ、デバッグ用はデバッグメッセージ、どの処理が実行されたか細かく知りたいような場合は詳細メッセージ、などのように、状況や欲しい情報によってログレベルを使い分けます。

2011年9月9日金曜日

コーヒーブレイク

先ほどまで広告代理店の方と打ち合わせをしていました。
来週からリクナビNEXTに求人広告を掲載するのですが、代理店の担当者はSさんは、いつもこちらの意見を熱心に聞いてくださって、私たちのために一生懸命仕事してくれています。本当に信頼できる方です。そして、掲載内容の詳細決めが無事完了しました。

ということで、少しコーヒーブレイク。


前回の求人で新たにトライウェアに入社してくれましたN君ですが、なかなか頑張っています。誰とも笑顔で接してくれていますし、エンジニアリングでは、これまでのキャリアで積み重ねてきた力を発揮してくれています。来週からの求人でも、トライウェアの新たなスタッフとして、そういった方に出会えることを期待しています。

では、今日は全て作業が完了したので、仕事を終わりますね。

2011年9月8日木曜日

エミュレータの作成と起動

先の記事で、Android開発環境インストールの説明を行いましたが、PC環境でアプリケーションの実行をエミュレートする仮想デバイス(AVD)の説明を忘れていました。AVDとはAndroid Virtual Deviceの略で、アプリケーションを実機と同等の動きをPC上でエミュレートし、動作確認できるものです。


通常アプリケーションの開発では、このAVDを使用してプログラムを作成し、ある程度出来たところで、実機での動作確認を行うという流れが一般的です。AVDは実機をエミュレートするものなので、対象とするターゲットデバイスの仕様と一致するように作成しておき、複数のAVDを用意しておくことで、PC上でいろいろなデバイスでの動作確認をすることができるようになります。

では、早速AVDを作成してみましょう。

2011年9月7日水曜日

LinearLayout (動的に生成する)

前回はxml内にLinearLayoutを記述して画面レイアウトを静的に作成しました。機種によって画面のサイズは様々ですが、画面のサイズにあわせてxmlファイルを用意すれば、小さい画面用・大きい画面用のレイアウトを作ることができます。また画面サイズは同じでも、縦長用・横長用のレイアウトをそれぞれ作ることもできます。このあたりについてはまた別に機会にご紹介しましょう。

xmlを記述する方法とは別に、コードを記述して動的に画面レイアウトを作成する方法もあります。動的に作ることのメリットは、表示させたい内容や件数によってレイアウトを変更できるところでしょう。ターゲットの画面がQVGA・HVGA・WVGAの3種だとした場合、もちろんデザインにもよりますが、静的に作ると画面サイズ3種×縦横2種の計6種類のxmlファイルを用意する必要があるかもしれません。動的に作るのであれば、画面サイズをもとに座標や件数を計算して表示させることができます。

今回は動的にUIを生成する第一歩として、シンプルな例を挙げてみます。

2011年8月27日土曜日

LinearLayout

使いやすいアプリケーションは、見た目がわかりやすく、また入力もしやすいものです。ですから画面レイアウトの設計と、それに基づいた実装はとても重要です。

画面レイアウトを制御するには、LinearLayout、RelativeLayout、FrameLayout、TableLayoutなどのクラスを使います。ここではLinearLayoutの使い方について書いてみます。LinearLayoutクラスはViewを縦または横に並べて配置するものです。

以下の例は、res/layout/main.xml を編集して、テキストを縦方向や横方向に配置します。方向の指定には「android:orientation」を使用します。「vertical」を指定すると縦方向、「horizontal」で横方向になります。

2011年8月20日土曜日

Android開発環境インストール

Androidのソフトウェアを開発するためには、まず開発環境を整えなければなりませんね。

一般的には
  • JDKインストール
  • Eclipseインストール
  • Android SDKインストール
  • EclipseへのAndroidプラグインインストール
というインストールの流れになるのですが、Eclipseプラグインの日本語化プラグインが置かれているPleiadesというサイトに、JDK、Eclipse本体、日本語化プラグインをまとめてパッケージングしたディストリビューションがあり、今回はこれを使用してAndroidの開発環境を構築することにします。

以下が開発環境構築の流れです。
  • 日本語 Eclipse / Pleiades All in One 日本語ディストリビューションインストール
  • Android SDKインストール
  • Androidプラグインインストール

それではWindows Vistaへの開発環境のインストールを説明してゆくことにします。