2016年12月20日

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ですべて対応可能でした。