唐突で申し訳ないですが、変更点などを挙げていきたいと思います。
レビュー欄にてご指摘をいただきましたユーザ様には大変に感謝しております。
1. 起動時間をわずかに改善しました:
起動時に行っていた、Firebase への接続・設定の読み込み・描画要素の作成などの処理を別スレッドに追い出して、並行処理できるようにしました。
また、以前はリワード動画広告の事前読み込みも(Google のガイドのとおり)起動時に行っていたのですが、広告非表示のメニュー選択後に初めて読み込むように変更しました。
これにより、起動時の処理を減らすとともに、全く動画リワードにご興味のない方はパケット消費をしなくて済むようにもなりました。
さらに、画面の状態を事前・あるいは前回の終了時に画像として保存しておいて、初期化も完了しないうちにすぐに表示させる(ズルですね。ダブルスプラッシュスクリーンと称するようです)というのも試してみました。
たしかに描画は早くなったのですが、画像の読み出しに時間がかかり本末転倒でしたので取りやめました。
画面表示が固定のアプリケーションならば効果ありそうです。
で、相応に詰めたつもりではありますがまだいまいち改善しません。
実は本プログラムは Xamarin (Androidネイティブ) で開発しており、前々回のバージョン位からAOTでネイティブコンパイルもしています。
これにより起動速度は初期に比べてこれでも相当に改善しているのですが、なんとなく Xamarin 利用上の限界のような・・・気が・・・
次のわかりやすい狙いどころは、計算経過の状態を保存している箇所の、JSON からのデシリアライズ部分です。
ここは JSON.NET にお任せで処理しているのですが、自前デシリアライザにすると早くなるそうなので、計測してみます。
2. ボタンの反応を改善しました。
従来は再描画のたびにすべてのボタンを Path を使って描きなおししていたのですが(なので、角丸風ボタンなどで特に反応が悪かった)、事前に全ボタンON状態・全ボタンOFF状態の大きな画像を2つ作成して、そこから貼り付けるようにしました。
もっと簡単な用意で済ませたかったのですが、任意の背景画像+半透明風のボタンという設定もあり、このような形となりました。
この画像の準備を起動時に行ってしまうと 1. の起動速度に影響しますので、なにか初回キーが押された際に準備するようにしています。また、設定画面を抜けた際はドロワーを閉じたタイミングで再作成しています。
3. カラーピッカーが小さいのを訂正しました。
このカラーピッカーは Y.A.M. さんが作られたカラーピッカー
https://y-anz-m.blogspot.jp/2010/05/androidcolorpickerdialog.html
を Xamarin に移植して利用させていただいています。
大変助かっています。さらに、色のコピペとか数値指定とかできるようにしたいですね・・・
計算処理エンジン部分は本物の電卓を叩き倒して、そっくりに作りましたので(カシオのアレも再現していますよ)、まずは速度をどうにかしたいですね。
もしもよかったら、ご利用ご継続をよろしくお願いいたします。