Android 画面で、画面の中にCustomViewを設けるときの対処
RedDraw(ゲームアプリ)は、指定されたパーセンテージの±1%以内を赤く塗る処理です。
例えば、レベルの指定が85%なら、84から86%以内を赤く塗りつぶせばクリアとなるゲームです。
画面内の塗りつぶし箇所(CustomView)にデータ渡しができず、調べついた結果をまとめました。
画面イメージ
以下の2Classで構成されています。
画面の”A”、”B”をJavaClassで作成する。
・画面A:初期表示、ボタン制御のロジックを作成。
XMLでレイアウト定義、Bの枠の位置・大きさは、CustomViewとして定義
・画面B:Draw処理(手書き描画)、レベルごとの描画処理を作成。
◆画面A・B間でデータ連携するとき
画面A・B間でデータ連携するとき通常の画面間のデータ連携では、SharedPreferences命令を
使用しますが、CustomViewとの連携では命令が受け付けてもらえません。
//通常なら(データ連携イメージ) ーーー連携元ーーー SharedPreferences DDD = getSharedPreferences("EEE", Context.MODE_PRIVATE); DDD.edit().putInt("EEE", xxx).commit();//書き込み(xxxに変数セット) ーーー連携先ーーー SharedPreferences DDD = getSharedPreferences("EEE", Context.MODE_PRIVATE); yyy = DDD.getInt("EEE", 0);//読み出し(yyyで変数取得)</pre><pre>
Androidで処理をするには、DB経由にしないと解決できなかったので、
sqlite3で1レコード作成してデータ連携をして対処しました。
以下の処理を考慮する必要があります。(処理ロジックは、省略します。)
・SQlite3の使用環境定義
・SQlite3でDBレイアウト・レコード作成(キー部と格納項目)
・連携元にSQlite3の書き込み処理
・連携先でSQlite3の読み込み処理
・DBの設置/DBが存在したとき作成しない処理など
ちなみにiosでは、1Classですべて対応可能でした。