Itsukaraの日記

最新IT技術を勉強・実践中。最近はDeep Learningに注力。

Android Studioで電卓アプリを作ってみました

Javaの開発環境としてAndroid Studioを使い、電卓アプリを作ってみました。

Android Studioのインストール方法と簡単な使い方は、以下を参考にし、分からないところは、必要に応じてググりました。

困ったこと

Android Studioの入門書を読んだわけでなく、場当たり的にやったので、下記で困りました。もしかしたら、下記のようなことは簡単にできるのかもしれませんが...

  • Designモードで画面を作る際、画面上の既存Widgets(ボタンなど)をコピー・ペーストしたいが、やり方が分からなかった。結局、Widgetsを1つ1つ手作業で作成・調整したため、手間がかかった。なお、Deisgnモードでなく、Textモードならば簡単にコピー・ペーストできるので、これが正解かもしれない(不便ではあるが...)。
  • Designモードで画面レイアウトの微妙な調整を行うのが難しかった。特に、GridLayoutで2つのセルに跨った大きなボタンを作りたかったが、なかなかうまくいかなかった。Textモードで「android:layout_columnSpan="2"」といった記述を追加しても、Buttonの枠だけ大きくなり、ボタンの文字が書かれた灰色の部分のサイズが変わらなかったり、灰色の部分のサイズをマウスでドラッグして変える際に、他のボタンと端をそろえるのが難しかったり、など。結局、ボタンのサイズは1セルにした。
  • それでも、電卓のディスプレイ部分は、4つのセルを使うようにしたが、実行すると一番右側の数字が表示されず、困った。当初、レイアウトではなく処理部分がおかしいのではないかと悩んだ。結局、右側にPaddingを入れ、数字が見えるようにした(正解が分からないので場当たり的な対応)。
    • これを書いている際に、Component Treeパネルなら、ディスプレイ部分をGridLayoutの前に移動できることが分かったので、修正しました。(Designモードでディスプレイの箱をマウスでドラッグするという操作では無理だった)
    • 上記により、元々ディスプレイ部分が入っていた行が空いてしまい、しかも縦に広がってしまった。この空いた行を削除する方法が分からず、ボタンを1つ1つ移動した。ボタンを纏めてグループとして移動できると、非常にありがたいのですが... やり方が悪いだけかもしれません....
  • ソースを修正しても、アプリを実行した際に反映されないことがあった。ホエミュレータの画面には、「アプリの一部が古いのでIDEから実行するように」といった内容のメッセージが出てくるが、対応方法が分からなかった。結局、エミュレータを一度閉じて、再起動したが、正解の対策が分からない。

良かったこと

Designモードで画面上のボタンの位置関係を変えると、Textモードでの各ボタンの記述位置が自動的に変わる点は良いと思いました。また、Analyze => InspectCodeで、色々と指摘しくれる点、および、一部の指摘は自動的に反映できる点もありがたいと思いました。例えば、変数のprivate化、メソッド内ローカル変数化など。

感想

上記、結局、場当たり的にやったのが良くなかったのだと思います。やはり、本ぐらい一通り読んでからやった方が、出戻りが少なくて良さそうです。最低限、http://dotinstall.com/lessons/basic_android_layout_v2:ドットインストールのレッスンは見てから始めたほうが良かったと、後悔しています。

電卓のアルゴリズムを適当に作っていたら、普通の電卓の操作が再現できず結構困った。ちょっとしたアプリでも、アルゴリズムはちゃんと考えないと...

なお、HTML+Javascriptの方が、簡単でどのスマホやPCでも動くので、良いような気もしますが...