« EKEN M001でAndroidアプリ作り1 | トップページ | EKEN M001でAndroidアプリ作り3 »

2010年7月 3日 (土)

EKEN M001でAndroidアプリ作り2

EKEN M001でAndroidアプリ作り1の続きです。

さて、何が作りたくてAndroid SDKなんぞに手を出してしまったのか?

実は「片手でスケジュール登録できるアプリ」が欲しかったのです。

私にとっては、切実に欲しいアプリの一つです。

私は字をすばやく書くのが大の苦手

仕事中に電話で打ち合わせの時間、場所を聞いて、それをメモにとることはよくあるんですが・・・

書いたメモを見ると、まるで14万8千光年かなたから届いたような謎のメッセージになってることもしばしば。

話す速度に手が追いつかない。

せっかくtouchやパソコンがあるんだから、もうちょっとスムーズにスケジュールできないか?

しかしtouchにせよ、パソコンにせよ、一般のスケジューラってのは意外に不便。

ちなみに会社では”Groupsession”という無料のソフトをカスタム化したものでスケジュール管理しています。

http://www.gs.sjts.co.jp/v3/index.html
多分ここに頼んで作ってもらったんじゃないかと。

しかし、これで時間と用件、場所を打ち込んでなんてやってると・・・キーボードとマウスでいったりきたり。手で書いたほうがまだましな状況。

とても間に合わない。こりゃだめだ。

なんとか片手ですぐに予定が入るように出来ないか?

よく考えたら、打ち合わせの相手や場所、内容のパターンなんて、結構決まっていたりする。

 よく会う相手、よく使う場所だけを事前に登録しておき、予定登録時にはそれらを選べばいいようにすればどうか?

時間も「9時~10時」など、30分~1時間きざみなことが多いので、この単位で登録できればほとんど事足りる。

これくらいの情報を選択するだけのスケジューラだったら片手で済むんじゃないのか?

探してみると、どうもこういうアプリはなさそう。

でもこれくらいなら作れそう。

というわけで、こんなイメージのものがあったらどうかというちょープロトタイプを作ってみました。

まだ未完成です。笑わないでやってください。

Android_sdk11

アプリ名は”片手でスケジューラ”としておきました。短絡的ぃ~

時間を選ぶチェックボックスがあって、そこに予定を選ぶプルダウンメニューがあります。

Android_sdk12

”8:00-9:00”前のチェックをタップして、”予定”を選択するとこうなります。

”予定”は三角印をタップして、一覧から選択できるのですが・・・

Android_sdk13

ありゃりゃ?真っ白で何も入ってない・・・

Android_sdk14

でもタップすると文字が浮かんでくるので、どうやら白地に白い文字が書いてあるようです。

なら文字か背景のカラーを変更するだけなのですが・・・その”だけ”がまだ出来ません。

これを必要な数だけコピーして増殖させれば、とりあえず形だけは整います。

時間を8時から17時まで1時間刻みにして、”予定”のプルダウンメニューを2つにして”用件”と”場所”の2つを表示させて見ました。

Android_sdk15

ありゃ、はみ出した・・・3時間分しか表示されてません。

要するに、レイアウトが悪い。

そこでレイアウト変更について調べてみました。

その結果はこんな感じ。

Android_sdk16

何とか5つほど表示されてます。

たったこれだけの変更を一日がかりで調べてました。

文字の大きさを変えない限り、これを縮められませんね。でも文字の大きさをかえる”だけ”のことがわからない。

まだまだ出来ないことだらけです。はがゆいですね。

レイアウトさえ出来たらあとは、

・ チェックを入れた時間の10分前にアラートを表示

・ ”用件”、”場所”に現れる項目を登録できるようにする

何せ1日分だけのスケジューラなので1日の終わりにリセットする

  (今はアプリ終了でオールリセットされますw)

てのを盛り込めば一応実用アプリとして動作可能。

今はただ並んでるだけのこんなインターフェースですが、まだ改良の余地はありそう。

インターフェース部分ってのは一番頭を使うところですね。特にこの手のアプリでは。

それにしても、たったこれだけのプログラムなのにコードはえらい量になってます。

package net.npaka.onehand_sche;

import android.app.Activity;
import android.os.Bundle;
import android.graphics.Color;
import android.view.Gravity;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.LinearLayout;
import android.widget.Spinner;

public class onehand_sche extends Activity implements View.OnClickListener {
    private CheckBox check1;
    private CheckBox check2;
    private CheckBox check3;
    private CheckBox check4;
    private CheckBox check5;
    private CheckBox check6;
    private CheckBox check7;
    private CheckBox check8;
   
    private Spinner spn1;
    private Spinner spn2;
    private Spinner spn3;
    private Spinner spn4;
    private Spinner spn5;
    private Spinner spn6;
    private Spinner spn7;
    private Spinner spn8;
   
    private Spinner spn11;
    private Spinner spn21;
    private Spinner spn31;
    private Spinner spn41;
    private Spinner spn51;
    private Spinner spn61;
    private Spinner spn71;
    private Spinner spn81;
   
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
       
        LinearLayout layout=new LinearLayout(this);
        layout.setBackgroundColor(Color.rgb(180, 180, 180));
        layout.setOrientation(LinearLayout.VERTICAL);
        setContentView(layout);
       
        String[] list={"なし","打合わせ","会議","報告","出張"};
        String[] list2={"なし","自部署","A会議場","B会議室","C棟","D工場"};
       

        check1=new CheckBox(this);
        check1.setText("08:00-09:00  ");
        check1.setTextColor(Color.rgb(0,0,0));
        check1.setOnClickListener(this);
        setLLParams(check1);
        layout.addView(check1);

        LinearLayout layout1=new LinearLayout(this);
        layout1.setBackgroundColor(Color.rgb(180, 180, 180));
        layout1.setOrientation(LinearLayout.HORIZONTAL);
        layout1.setGravity(Gravity.LEFT);
       
        spn1 = new Spinner(this);
        spn1.setPrompt("用件");
        ArrayAdapter <CharSequence> adapter1 = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_list_item_1, list);
        spn1.setAdapter(adapter1);
        setTLParams(spn1);
        layout1.addView(spn1);
       
        spn11 = new Spinner(this);
        spn11.setPrompt("場所");
        ArrayAdapter <CharSequence> adapter11 = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_list_item_1, list2);
        spn11.setAdapter(adapter11);
        setTLParams(spn11);
        layout1.addView(spn11);
       
        layout.addView(layout1);

       

(・・・このあと、上の青字部分と同様の書式が7つ登場 [省略])
       
     }

    private static void setLLParams(View view) {
        view.setLayoutParams(new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT,
                LinearLayout.LayoutParams.WRAP_CONTENT));
    }
    private static void setTLParams(View view) {
        view.setLayoutParams(new LinearLayout.LayoutParams(
                160,48));
    }

    public void onClick(View v) {   
    }   
}

ずいぶんと無駄なコードが多いですね・・・正直ちょっと恥ずかしい。

まだまだ勉強は続きます。

でも最近仕事が忙しくて、なかなか時間を作れませんね。ここまでくるのにすでに2週間以上かかってます。

とりあえず、この状態のものをEKEN M001に持っていきますが・・・これはまた次回。

« EKEN M001でAndroidアプリ作り1 | トップページ | EKEN M001でAndroidアプリ作り3 »

Android」カテゴリの記事

コメント

すばらしいですね。
開発がんばってください。

こんにちは、??さん。

ありがとうございます。最近はすっかりご無沙汰になってますがまた再開したいですね。

せっかくまともなAndroid端末も手に入れたんで、いいタイミングなんですが・・・結構難しいです、プログラミングって。一度どこかでちゃんと習いたいですね。

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: EKEN M001でAndroidアプリ作り2:

« EKEN M001でAndroidアプリ作り1 | トップページ | EKEN M001でAndroidアプリ作り3 »

無料ブログはココログ

スポンサード リンク

ブログ村