連載
» 2011年07月14日 10時48分 公開

Android技術者認定試験「ACE」ドリル(3):Androidのユーザーインタフェース【中編】 〜アプリ開発の“肝”となるイベント処理とビュー〜 (2/2)

[奥 崇(elan),@IT MONOist]
前のページへ 1|2       

解答

演習1:答え(2)

 まずは「イベントリスナ」の仕組みから説明しましょう。

 イベントリスナとはその名の通り、イベントを“聞いている”クラスになります。具体的にいうと“クリックする”などのイベントが発生したときに、それを認識し、自身が持つ特定のメソッド(“コールバックメソッド”といいます)を起動するクラスとなります。つまり、イベントが発生したときに実行したいロジックを、その「コールバックメソッド」に記載すればよいのです。

 イベントリスナの作成の方法は、“クリックする”などのイベントごとに用意されているインタフェースを実装することにより実現します。例えば、イベントに対応するインタフェースとして「View.OnClickListener」があります。これを実装したクラスは、ビューがクリックされたことを検知するイベントリスナとなります。

 また、View.OnClickListenerは「onClick」メソッドを持っています。そのため、実装クラスではonClickメソッドを実装する必要があります(これはJavaの文法の話ですので、ピンとこない方はJavaの復習をしましょう)。勘のよい方は既に気づいたと思います。先述のロジックを記載すべきコールバックメソッドが、この例ではonClickメソッドとなります。つまり、コールバックメソッドはインタフェースに定義されており、実装クラスにてメソッドの実装を義務付けられます。

 注意点としては、イベントリスナは作成するだけでは起動しません。そのイベントリスナを、該当のビューにセットしなければいけません。そのセットする方法として、Viewには「setXXXListener(“XXX”はイベントに対応)」というメソッドが用意されています。例えば、あるビューをクリックしたことを認識したい場合は、そのビューの「setOnClickListener」メソッドを用いて、View.OnClickListenerを実装したクラスを引数として指定する必要があります。よって、演習1の解答は(2)「setOnClickListener」となります。

コールバックメソッド 説明
onClick View.OnClickListenerが持つ。クリックされたときなどに呼び出される
onLongClick View.OnLongClickListenerが持つ。長押しされたときなどに呼び出される
onFocusChange View.OnFocusChangeListenerが持つ。フォーカスが変更されたときに呼び出される
onTouch View.OnTouchListenerが持つ。押す/離すなどの動作が行われたときに呼び出される
表1 イベントリスナの持つコールバックメソッドの例

演習2:答え(4)

 演習1の解説を読んでいただければ解答は分かると思います。(4)の「onFocused」だけが存在しないメソッドとなります。

 カーソルの選択/非選択が変更されたときは、「onFocusChange」のイベントが発生します。しかし、選択したときだけ、非選択したときだけ発生するイベントは存在しません。まずは、表1のコールバックメソッドを覚えましょう。

演習3:答え(1)

 演習3では、「イベントハンドラ」という新しい言葉が出てきました。イベントハンドラはイベントリスナとは別物です。Androidでは、イベントが発生すると、まずイベントハンドラが呼び出されます。その後に、各ビュークラスで定義されたイベントハンドラが呼び出されます。ここで、押さえてほしいのは、“イベントハンドラはビューのクラスに定義されているメソッド”だという点です。

 イベントリスナは、イベントリスナを登録することにより特定のビューの振る舞いを定義したい場合に用いましたが、イベントハンドラは、あるビュークラス全体の振る舞いを定義したい場合に利用することになります。この使い分けは、必ず理解するようにしてください。表2に、イベントハンドラの一覧を示します。

イベントハンドラ 説明
onKeyDown キーイベント発生時に呼び出される
onKeyUp キーアップイベント発生時に呼び出される
onTrackballEvent トラックボールの動作発生時に呼び出される
onTouchEvent タッチスクリーンでのタッチ発生時に呼び出される
onFocusChange ビューのフォーカスの変更発生時に呼び出される
表2 イベントリスナの持つコールバックメソッド

 以上より、存在しないイベントハンドラは(1)の「onTouch」となります。

演習4:答え(3)

 まずは「ビュー(View)」から説明します。ビューとは、ずばりUIのパーツです。“ビュー = UIのパーツ”、まずはこれをしっかりと覚えてください。また、ビューはさまざまな属性を持っています。その属性により、各ビューの設定を行うことができます。代表的なものを以下に示します(表3)。

属性名 機能
id 一意にするためのID
layout_width 横幅の指定
layout_height 縦幅の指定
text 表示テキストの設定
表3 ビューの持つ属性例

 少なくともこの4つの属性名と機能は覚えましょう。また代表的なビューとして以下が挙げられます(表4)。

代表的なビュー 表4 代表的なビュー
※OESF認定Androidアプリケーション開発入門コーステキストより抜粋

 さて、「TextView」ですが、表4の通り、テキストを“表示する”ためのビューになります。そのため、テキストの編集はできません。よって(3)「テキストの編集ができる」が選択すべき解答となります。なお、テキストの編集は通常「EditText」を用います。

演習5:答え(3)

 この演習内容の詳細に入る前に、「ビューグループ(ViewGroup)」の説明からしなければなりません。ビューグループとは“複数のビューをまとめる機能を持つビュー”となります。通常、それ自体が目に見える形でUIを提供することはありませんが、そのビューグループが子要素としてビューを保持し、それらの見た目を調整する機能を持っています。

 この演習では、皆さんがこれから一番使うであろう「LinearLayout」を取り上げています。LinearLayoutは子要素を垂直、ないし水平方向に並べて配置する機能を持っています。なお、垂直に並べるのか、水平に並べるのかを指定する方法としては、LinearLayoutの「orientation」属性に指定することにより可能となります。“vertical”と指定すると垂直方向、“horizontal”と指定すると水平方向になります。よって、正解は(3)「ビューを垂直ないし水平方向に整列する機能を持つ」となります。他の選択肢については、以下の表5を参考にしてください。

代表的なビューグループ 表5 代表的なビューグループ
※OESF認定Androidアプリケーション開発入門コーステキストより抜粋

 なお、ビューグループは、ドキュメントや開発環境上ではレイアウト(Layout)と表現されているときもあります。ちょっと紛らわしいですが、ビューグループとレイアウトは同一であると認識しておいてください。

 また、ビューとビューグループには、今回取り上げなかったものも多数存在します。これを機会にご自身で少しずつ、どのようなものがあるのかを学んでいきましょう!



 連載第3回はいかがでしたか? 今回は非常に重要なイベント処理とビューを取り上げました。今回の内容は初学者には、少々難しかったかもしれません。また、実際にAndroidアプリケーションを書いてみないと、なかなかピンとこない分野でもあるかと思います。まだ手を動かしたことがない方は、ぜひとも実際にコードを書いてみましょう(ACEではコードの中身も問われますので、ACE対策にもなるはずです)。

 次回は【後編】として、AndroidのUIの残りの部分を取り上げる予定です。ご期待ください! (次回に続く)

ACEアプリベーシック試験対応イーラーニング(サンプルIDプレゼント中)



前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.