汎用的なStatusLineを作る - part1

GUIを用いるOS、アプリケーションでは現在の状態や必要な情報を次々に表示している領域が必要だ。

いわゆるステータスバーと呼ぶ領域だが、androidの場合時刻やWi-fi、3G通信の状態やバッテリー消費状況のアイコンを表示したりNotificationと呼ばれる通知領域を引き出す部分を指すことが多い。

android 2.3のステータスバー

アプリケーションでも同様に現在の情報を表示する領域を使いたい、しかしステータスバーはシステムで使用しているものであり、勝手に使ったり変えたりすることはできないので、アプリケーションで共通に使うステータスバーと同様のものを作ろうと思う。

名前が被ると分かりづらくなるのでここでは便宜上"ステータスライン"と呼ぶことにする。

インタフェースを考える

いきなりクラスを書いても良いのだが、最初の思いつきとしてステータスラインの実装を複数持てるようにしたい。

だが現在考えているのは例えば

    • タイトル(title)を使用したステータスライン
    • トーストを使用したステータスライン

このように複数の実装をシステムによって使い分けることができるようにしたい、なのでインタフェースから考えることにした。

IStatusLine.java
interface IStatusLine {
    /** 
     * 現在のエラーメッセージを取得します
     * @return CharSequence 取得したエラーメッセージが戻ります
     */
    CharSequence getErrorMessage();
    /** 
     * エラーメッセージを表示します
     * @param message 表示するメッセージをセットします
     */
    void setErrorMessage(CharSequence message);
    /** 
     * エラーメッセージをリセットして他のメッセージを表示可能にします
     */
    void resetErrorMessage();
    /** 
     * 現在のメッセージを取得します
     * @return CharSequence 現在のメッセージが戻ります
     */
    CharSequence getMessage();
    /** 
     * メッセージを表示します
     * @param message 表示するメッセージをセットします
     */
    void setMessage(CharSequence message);
}

まずはここから初めてみよう。