Android:LiveWall(ライブ壁紙)Android開発日誌:androidとjava関連Androidの開発日誌です。javaやandroidアプリの開発で勉強したことの自分用メモおよび検索で知識の共有が図れたらな、と。■Androidのライブ壁紙でアナログ時計アナログ時計自体はウィジェットとか使えば楽ちんで出来るんだけど、ライブ壁紙でも作りたいよね。1回つくっとけば応用もできそうだし、よし作ろう。いうことで作り始めたはいいが、どちらかというとJAVAのお話にもなるので、それ系で調べてみると素敵な参考サイト発見。(相変わらずの他力本願)参考サイト:http://d.hatena.ne.jp/yatcho/20090423/1240477532きっと色々とやり方はあるんだろうけど、ここが一番わかりやすかった。このサイトでやってるのをライブ壁紙用に改造した↓まずはライブ壁紙の本体。}つづいて、時計の計算クラス。これはほぼそのまま↓。Clockクラスで計算した座標をもとに、Clock01のライブ壁紙クラス側で描画してます。Clockの座標計算のあたりは見ておくと勉強になります。僕のような初心者には。ここまでできてれば、あとは秒針とかの画像を変えればそれなりに良いのできるんでないかい?ありがたや~あ、画像サイズは今は480,800が入ってるから適宜変えて下さい。できてたら、こんな感じで見えるはず。秒針が動いていたらOKです。あと、Manifestとかは通常のライブ壁紙と同様に設定してください。0このページのトップへLiveWall(ライブ壁紙)でタッチの座標がずれる■LiveWall(ライブ壁紙)でタッチの座標がずれるライブ壁紙にPreferenceを設定したころ、困った問題が...「Preferenceで設定変更して、SurfaceViewを再描画するとタッチの座標がずれる!」というもの。別にびっくりマーク付けるほどのもんでもないけど、うっかり見落としそうになったので。width);みたいにログをしかけてデータをとる。獲物をしとめる漁師のように地道に大きさを見ていくと、所々でおかしな数字が...。それらの参照するwidthやheightの変数をしっかり作ってあげることで解消できました。いやー、いま思うとなんてことないんだけど、最初タッチしても無反応だから焦った。「パーティクルの数変更してぇ」となるわけです。バッテリーのことも考慮して、負担へらせる設定変更もできたらなと。お手軽な設定変更方法といえば、SharedPreferencesを使った方法があります。実装するわけですが、ここでハマった点を説明(というか自分用メモ)・onSharedPreferenceChanged()を実装する場所まずそこからして分からなかったおバカさんな僕ですが、試行錯誤の末にライブ壁紙の場合はエンジンを継承したクラス(参考本の例だとGLengineクラス)に実装します。ライブ壁紙に設定画面を追加する↑こちらの内容を100万回ほど参考にしてなんとか実装したのだけれど、困ったことが。リンク先でも言及されているが、設定変更後は通常drawframe()などで再描画を行い変更を反映する必要がある。ところがところが、OpenGLで作った場合そのdrawfameメソッドみたいなのがないのです。いやあるんだけど、まずは↓を見てみよう。R.drawable.wall001;...その他変更処理いろいろonCreate(getSurfaceHolder());onSurfaceCreated(getSurfaceHolder());}まー、drawのメソッドがないならもう一回surfaceをCreateすればええんちゃう?とやってみたら、ダメでした。そらそーだ、これだと初回読み込みとかにもエラー出るし、この状態でパーティクルの再描画もしたら変更した瞬間に処理が追いつかなくてオーバーフローでした。↑を↓に変えたらOKでした。null){onSurfaceDestroyed(getSurfaceHolder());onCreate(getSurfaceHolder());onSurfaceCreated(getSurfaceHolder());onVisibilityChanged(false);}}やったこと・最後のif文で、glがnullじゃないときのみ再描画処理を行う(初回起動対策)ここでいうglはThreadを継承したOpenGLの開始処理とかを行うクラス。いうか本に載ってるママの変数。・if文で判別したら、再描画処理するんだけど、まずはonSurfaceDestroyed、で破壊→そののちにonCreate。単なるdraw処理じゃなくて一度破棄しないとダメみたい。・最後にonVisibilityChangedでポーズ状態にする。これをしないと変更した瞬間に、変更画面のままパーティクルが動きまくって処理エラーになります。(何を隠そうここが一番ハマった)同じ本を使って作っている人の参考になれば幸いです。いい方法があると思うので教えてくれる素敵な人たちを募集中です。(09/29)プロフィールAuthor:yukinori110Androidってなに?Javaってなに?というレベルから勉強してます。