2015年11月6日金曜日

CalcNote

突然ですが、ひょんなことから現在、Android向けに電卓アプリを作ってます。
ComicCafe以外でGooglePlayにリリースしているアプリは無いので、このアプリが記念すべき2作目ということになります。
ComicCafeは大量の自炊ファイルを扱うことから、99.999%の一般の方には不要なアプリで、正直なかなかダウンロード数が伸びません。その半面、使ってくれる方はリテラシーの高い方が多いので、理不尽なレーティングも少なく4.38というとても良い評価をキープできています。(評価数自体が少ないというのもありますが。。。)
今回のCalcNoteは電卓アプリということで老若男女全てのユーザーが使えるアプリです。リリース後にどのような評価を貰えるか非常に楽しみであり怖いです。
残り3件のバグを修正したらリリースする予定なので、ComicCafeをお使いの方は是非、ダウンロードしていただけると嬉しいです。ちなみにスクリーンショットはこんな感じになります。


Screenshot 1

計算式を入力すると右ペインに答えがリアルタイムで表示されて、式はテキストエディタみたいに修正可能です。数値の入力パッドをスワイプすると関数電卓用の入力パッドに切り替わります。昔、Windows時代に便利に使わせてもらっていたiMemoってソフトに似た感じです。もちろん無料ですが今回は広告を入れてみました。
移動時間や就寝前などの空き時間を使って2週間ぐらいで実装したのですが、作っててちょっとハマったことをメモとして書きたいと思います。


1. AndroidStudioの謎のエラー表示
LayoutファイルでLinearLayoutにxmlで作成したdrawableをandroid:backgroundに設定したいたのですが、AndroidStudioで見るとエラー表示になります。

AccessMenuBarApps1

普通に実行できて問題は発生しないので放置していたのですが、原因は単にAndroidStudioがリソースファイルを表示できないってだけでした。通常、画像ファイルなどを指定すると、AndroidStudioはその画像を表示してくれます。

AccessMenuBarApps2

しかしxmlで記述したdrawableファイルは表示できないようで、あの赤いエラーマークみたいなのを代わりに表示しているとのこと。表示できないなら素直に何も表示しないで欲しかった。。。


2. Buttonを継承するとマテリアルデザインが適用されない
電卓のボタンでロンタップするとPopupWindowで関連する機能のボタンを表示しているのですが、そのロングタップできることを伝えるために、ボタンに三点リーダを表示しています。


Screenshot 4

この三点リーダを描画するためにButtonクラスを継承してonDrawで書こうと思ったのですが、Buttonを継承しただけでButtonのデザインがマテリアルデザインではなく普通のボタンになってしまいます。調査するとSuppot Libraryは内部で独自にLayoutInflaterを使っていて、もはやButtonでは無いViewに差し替えてButtonらしきものを表示しているらしいです。結局FrameLayoutでButtonとTextViewを重ねて対応しましたが、調査にかなり時間を取られましたorz


3. Android5、Android6だとFrameLayoutで重ねたViewが表示されない
これも先ほどの話と関連してるのですが、せっかくFrameLayoutで解決した三点リーダがAndroid5以上だと表示されなくなりました。Android4の端末しか持ってないので、エミュレータで確認していたバグなので当初はエミュレータのバグだと決めつけてました。同僚に実機を借りて試したところ見事に問題が再現してエミュレータの凄さを実感しました。原因はAndroid5から仕様が変わったらしく、前面に表示したいViewにandroid:translationZ=100dpと指定して解決しました。


ComicCafeのv0.6.37はテスト中なので、CalcNoteのほうが先にリリースすると思います。是非とも、よろしくお願いします。

0 件のコメント:

コメントを投稿