Vol de Nuit ~夜間飛行~

App Inventor2でアプリを作る中年オヤジの無謀な挑戦日記

App Inventor2 でAndroidのアプリを作ってみる 7. 電卓を作ってみる (6)数値の入力

さて、ボタン配置等をしてデザインができたのでだいぶ電卓らしくなってきました。でもエミュレータでボタンをポチポチしても何も起こりませんね。

これからボタンを押したときに何らかの動作ができるようにします。

AI2の右上にあるBlocksのボタンを押します。

すると、動作ブロックを構築する画面に切り替わります。

f:id:spice_jp:20160517121334j:plain

さきほど配置したラベルやボタンなどが左側のメニューに表示されていればOKです。

このBlocks画面はDesign画面に連動しています。

もしDesign画面であらたなパーツが追加されたり、不要なパーツを削除するとその内容がこちらのBlocks画面に反映されます。

まず最初に、具体的な動作を構築する前に、

1+2=3の足し算を考えて見ましょう。

入力は、1 + 2 = で 4つの入力があり

結果は 3 です。

入力された数値や演算子を入れておく複数の箱(変数)を用意して、箱の中身を足した結果を表示すれば良いようです。

順序を考えると

1.起動時 何も入力されていない

2.1のボタンを押す 箱Aに1を入れる 箱Aの表示

3.+のボタンを押す 箱Bに+を入れる 箱Bの表示

4.2のボタンを押す 箱Cに2を入れる 箱Cの表示

5.=のボタンを押す 箱Aと箱Cの値を箱Bの演算子に従って計算して箱Dに結果をいれ、箱Dの中身を表示する。

これらの動作を行うには4つの箱と、箱Bの中身に何が入っているかを判定して計算させ、結果を表示する必要があります。

これをBlocks画面で作ってみましょう。

1)まず箱A,B,C,Dを用意します。

左側のVariablesをクリックし、f:id:spice_jp:20160517124911j:plain を

選択します。nameをクリックしてAに変更します。

f:id:spice_jp:20160517125002j:plain

2)次にTextからf:id:spice_jp:20160517125119j:plainを選択して先ほどのInitialize ブロックに接続します。するとこんな形になります。

f:id:spice_jp:20160517125424j:plain

これでAという名前の箱ができました。中身はからっぽです。同様に他の箱も用意します。

f:id:spice_jp:20160517125609j:plain

3)次に、1のボタンの記述は、

左のメニューからB1を選択し、Whenボタン名Click to を下図のようにドラッグ&ドロップします。

f:id:spice_jp:20160517130118j:plain

4)次にVariablesのf:id:spice_jp:20160517130335j:plainを選択してset とtoの間のメニューで、global Aを選択し、先ほどのB1のブロックに組み合わせます。

f:id:spice_jp:20160517130718j:plain

5)次にTextからf:id:spice_jp:20160517125119j:plainを選択し、Set global to のブロックに組み合わせて、中身を1とします。

こんな形になるはずです。

f:id:spice_jp:20160517131112j:plain

これで、B1(1のボタン)をクリックすると、箱Aに1がセットされることになります。

6)1のボタンをクリックしたら、1が表示されるようにするには、表示用のラベルHyoujiからSet Hyouji toとVariablesのget to を選択し組み合わせます。f:id:spice_jp:20160517132049j:plain

これを先ほどのB1のブロックに組み入れます。

するとこんな形になるはずです。

f:id:spice_jp:20160517132149j:plain

さっそくエミュレータで1のボタンを押してみましょう。

正常にブロックが組みあがっているなら、1が表示されるはずです。

7)同様に2のボタンも作ります。1のボタンの記述をコピーしてしまいましょう。1のボタンのブロック上でマウスの右ボタンをクリックし、Duplicateを選択するとコピーできます。

f:id:spice_jp:20160517132457j:plain

コピーしたら、ボタンの名前、箱の名前、箱にいれる数値を変更

します。

f:id:spice_jp:20160517133025j:plain

このような手順で同様に、+も作ってしまいましょう。

8)ここまでの全体図は下図のようになります。

f:id:spice_jp:20160517133326j:plain

9)最後に=を押してら計算して結果を表示させます。

=をおして、箱Bの中に入っている演算子が+だったら、箱Aと箱Cの値を足し算するには、下記のようにブロックを組み合わせます。

f:id:spice_jp:20160517134023j:plain

これは、

=ボタン(例ではB_Eql)が押されたら、

箱Bの中身が+であれば、箱Aと箱Bの値を足し算し、箱Dに入れ、

箱Dの中身をHyoujiラベルに表示させる

という動作を記述しています。

10)ここまでの全体図は下図になります。

f:id:spice_jp:20160517134627j:plain

エミュレータで動作確認しましょう。

正常に計算できましたか?

 

今までの話は、単純なケースを考えました。

しかし実際には100や12345といった複数桁がある値の計算や、小数点を表示させなければなりません。

上記の動作記述は基本的に1桁の計算はできますが、桁上がりなどは考慮していません。

ですので、もっと良い方法を考える必要があります。

 

 

App Inventor2 でAndroidのアプリを作ってみる 7. 電卓を作ってみる (5)ボタンの配置

次は数値や演算子などを入力するためのボタンを配置してみましょう。

上から三つ目のHorizontalレイアウトにボタン7,8,9,÷,ACの5つのボタンを配置します。

f:id:spice_jp:20160517113016j:plain

それぞれのボタンのプロパティは共通で、以下のようにしました。

・FontBold ☑

・FontSize 20

・Width  60 pixcels

・Text    ボタンに表示させる文字列

ボタンの名前も分かりやすいように変更しておきました。

 

f:id:spice_jp:20160517113036j:plain

同様に他のボタンも配置しましょう。

f:id:spice_jp:20160517114438j:plain上の例では、スクリーン上で右端のボタン表示がおかしいですが、私のスマホで表示させてみると問題ありませんでした。(画面のインチ数のせいかな??)

補足(Screen1のプロパティで表示アライメントをCenterにするとうまく表示できました。)

ボタンのテキスト、色、ボタン形状等はある程度変更できます。

最後にエミュレータで確認しましょう。

f:id:spice_jp:20160517115050j:plain

ボタンの配置の設定は数が多いだけに面倒な作業でしたね。なぜコピー/ペースト機能がないんだろう・・

 

App Inventor2 でAndroidのアプリを作ってみる 7. 電卓を作ってみる (4)表示ラベルの配置

レイアウトが終了したら、いよいよ表示用のラベルやボタンをを配置して行きましょう。

まずは結果などを表示するための画面を作ります。

電卓の液晶画面ですね。

左側のメニューからLabelをドラッグして、表示用のレイアウトにドロップします。

f:id:spice_jp:20160517012805j:plain

このLabelはテキストや数値を表示する場合に使うものです。のちのち分かりやすいように、Componentsにて、Label1を選択→Rename→で名前を付け替えておきましょう。ここではHyoujiにしました。

f:id:spice_jp:20160517012336j:plain

ラベルHyoujiのプロパティは、

・BackgroundColor Light Gray

・FontBold  ☑

・FontSize 40

・Width  250 pixcels

・Text   0

・TextAligment right

としました。

 

同様に、Label2を先ほどのHyoujiの右隣に配置します。配置がやりにくいかもしれませんが、表示用のHorizontalレイアウトの中に配置します。

Label2をHyouji_Opeに名前を変更しました。これは四則演算でどの演算子が選択されているかを表示するためのラベルです。

Hyouji_Opeのプロパティは、

・FontBold ☑

・FontSize 40

・Width 40 pixcels

・Text +

・TextAligment center

としました。

f:id:spice_jp:20160517014626j:plain

 

 

App Inventor2 でAndroidのアプリを作ってみる 7. 電卓を作ってみる (3)レイアウト

Projects→New Project→お好きなアプリ名でプロジェクトを開始して、まず最初に電卓のデザインを行いましょう.

ボタンや結果表示画面を何も考えずに配置することもできますが、見た目が綺麗ではないのでLayoutを使用します。

このLayoutであらかじめ大まかな配置領域を決めてしまおうというわけです。

f:id:spice_jp:20160517000314j:plain

Layoutには3種類あります。

・HorizontalArrangement 水平方向にブロックを並べる

・TableArrangement Excelみたいに碁盤上に並べる

・VerticalArrangement 縦方向にブロックを並べる

f:id:spice_jp:20160517000956j:plain

TabelArrangementが使いやすいんでしょうが、私の場合どういうわけかうまく表示されなかったので、HorizontalとVerticalを組み合わせてレイアウトを決めました。

この辺りは個人の趣味やセンスが生かされるので好きなようにアレンジしましょう。

私の場合は、まずHorizontal2個とVertical1を配置しました。

f:id:spice_jp:20160517002230j:plain

余白調整用のHorizontalのプロパティは

 Hight(高さ)10 pixcels

 Width(幅)315 pixcels

表示用のHorizontalのプロパティは

 Hight(高さ)Automatic (自動調整)

 Width(幅)Automatic (自動調整)

ボタン配置用Verticalのプロパティは

 Hight Automatic

 Width Automatic

としました。

f:id:spice_jp:20160517003910j:plain

ボタン配置用のレイアウトは、先ほど配置したVerticalにHorizontalを4つ組み合わせました。

4個のHorizontalのHight、WidthともAutomaticにしました。

f:id:spice_jp:20160517004850j:plain

最終的に、下図のようなレイアウトにしました。

f:id:spice_jp:20160517005455j:plain

 

App Inventor2 でAndroidのアプリを作ってみる 7. 電卓を作ってみる (2)Gallery

AI2で作成してみた電卓をAI2のGalleryにて公開してみましたw

AI2を立ち上げた最初の画面の上部メニューにある

”Gallery”をクリックし、下図の様にdentakuで検索してください。dentakuで登録してあるのはまだ私のだけみたいですねw 画像をクリックして、”Open The App"でロードできます。

f:id:spice_jp:20160516233347j:plain

よろしければ試してください。まだちょっとおかしなところがあることが判明・・・そのうち直します。

 電卓って意外にややこしかった。なんども紙に動作を書いて作りました。

もし他の人が作った電卓の中身を見たい場合は、上述のGalleryでCalculatorで検索するとたくさん出てきます。

色んなのがあって参考になりますよ!

 

 

 

App Inventor2 でAndroidのアプリを作ってみる 7. 電卓を作ってみる (1)外観

簡単な電卓を作ってみました。

f:id:spice_jp:20160515231057j:plain

・四則演算 (+ - × ÷)

・小数点

・ルート

・+-の変換

・結果のオールクリア

ができるようにしてみました。

例えば、

1+2とキーを打ち込んだあと、=を押せば3が表示されますが、+を打つと同じように3が表示される一般的なよくある電卓です。

電卓はボタンが多いので、思いのほか多くの動作処理ブロックを記述することになりました。

次回から数回に分けてこの電卓のデザインとブロックについて書いていこうと思います。

このアプリに広告を表示させることも考えています。

 

App Inventor2 でAndroidのアプリを作ってみる 6. とりあえず動かそう(2)

前回でアプリの画面ができましたので、今回から動作を実行させるための手順を。

 

1. AI2でアプリのボタン配置などを行っていたデザイン画面の右上に、"Blocks"ボタンがあるので、クリックします。これにより、動作の記述を行う画面に移動します。f:id:spice_jp:20160514082606j:plain

2.下図画面が動作記述をするブロック画面です。デザイン画面と同じようにドラッグ&ドロップでブロックを配置して動作を組み立てていきます。

f:id:spice_jp:20160514084124j:plain

3.さっそくやってみましょう。

まず最初に左側のメニューから先ほど配置したボタンをクリックします。すると新たにいくつかのブロックが表示されるので、”when ボタン名 Click"をドラッグして、中央の画面にドロップします。

f:id:spice_jp:20160514084705j:plain

4.ドラッグすると下図のようになります。

f:id:spice_jp:20160514085058j:plain

5. 同じように、先ほど配置したラベルを選択して、

"set ラベル名.Text to "をドラッグ&ドロップします。

f:id:spice_jp:20160514085733j:plain

6. すると下図のようになるので、緑色のset ブロックをドラッグしてwhenブロックにはめ込みます。

f:id:spice_jp:20160514090027j:plain

はめ込むとき"カチッ"と音がします。

 f:id:spice_jp:20160514091157j:plain    

7. 次に左メニューで”TEXT"をクリックして一番上にある、"  "ブロックをドラッグして配置します。

f:id:spice_jp:20160514090849j:plain

8. 配置したTEXTブロックの” ”部分をクリックすると文字列が入力できるので、Helloと入力します。

f:id:spice_jp:20160514091617j:plain

9.入力後、TEXTボックスを先ほどのsetボックスに接続します。

f:id:spice_jp:20160514091816j:plain

これで、ブロックは組みあがりました!

このブロックの意味は、

f:id:spice_jp:20160514092710j:plain

という動作を表しています。

10. エミュレータで動作を確認してみましょう。

aistaterを起動して、上部メニューのConnectからEmulatorを選択します。”Push!”ボタンをクリックすると”Hello"が表示されればOKです。

f:id:spice_jp:20160514093645j:plain

どうですか?正常に動作が確認できましたか?

もし動作がおかしければ、もう一度ボタンなどの配置や動作ブロックの内容を確認しましょう。

 

基本的にこれらの操作の繰り返しを行うことで、さらに複雑なアプリを作成することができます。