Glaejaで天気を表示する方法まとめ その2

前回の続きです。
今回はもうちょっと深くいきます。

明日の天気、n日後の天気を表示する

Glaejaでは基本的に7日間の天気予報を取得できます。例えば%t%では「fine partly cloudy,fine partly rain,…」といった具合に、カンマ区切りで7つ表示されます。
では、この中から明日の天気だけを取り出すにはどうしたらいいか?

130920-5
前方文字置換エスケープキャラクタ「@…@」、いわゆるかたつむりの中から「m」を使います。

1@p@%t%@0/-1/m@

これは%t%で表示された文字列の、カンマ区切りされた2番目の値を表示する、という意味です。
最初に1@p@なのに2番目、というのは、カンマ区切りの最初を0番目と数えるからです。
なので、最初の数字を2に変えれば明後日の、3に変えればその次の日の天気を表示できます。

%t%に限らず、%h%,%l%,%r%といったカンマ区切りのもので同様にできます。

アイコンフォントを使って天気を表示 その1

最近はフォントがアイコンになったものも多くあります。これを使うと拡大縮小が容易なアイコンとして利用できます。(システム的には「文字」だけど見た目には「アイコン」となる。)

まずは代表的な天気系アイコンフォントである「Climacons」をダウンロードしてGlaejaのfontsフォルダに入れましょう。いろんなアプリでも使われているアイコンなので、見たことある人も多いと思います。
Climacons Font

具体的に、どの文字でどのアイコンが表示されるかは、以下の対応表を見てください。
130920-6

要するに、Glaejaで表示される文字列を、どうにかしてこれらの文字に変換すれば、アイコンが表示されるわけです。
%C%なら3桁の数字で天気が表示されます。%C%で表示される100といった数字をClimaconsでの文字に変更します。これまた@0/-1/m@を使います。

%C%@p@,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,I,,,,,,,,,,,,",%,(,G,,,,(略)@0/-1/m@

…長すぎる…。

%C%の3つの数字のうち、2桁目は[0:(なし), 1:時々, 2:のち]となっています。私の場合、「晴時々曇」も、「晴のち曇」も、どちらも似たようなものだろ、と判断します。なので2桁目は要らない!と。
そんなわけで、%C%から2桁目を削除します。

%C%@1/1/d@

130920-7
これでスッキリしたのでもう一度@0/-1/m@を使ってみましょう。

%C%@1/1/d@@p@',,,,,,,,,,I,,",%,(,G,,,,,!,",,$,6,F,,,,,*,+,$,,0,,,,,,6,7,6,0'@0/-1/m@

これで…たぶん…大丈夫…たぶん。
(もちろん、上記のテキストはClimaconsのみに対応しており、別のアイコンフォントではまた別の文字を合わせる必要があります。)

アイコンフォントを使って天気を表示 その2

私が作成したフォントでGlaiconというものがあります。1と2と、現在2種類があります。これはもうちょっと簡単に天気を表示できるアイコンフォントです。
フォント「Glaicon2」 | orefolder.blog
このアイコンフォントは1が晴れアイコン、2が曇りアイコン…というようにGlaejaの%C%に合わせたものになっています。

リッチテキストを使って、以下のように3つの文字列群を作成します。すべてGlaicon2フォントです。

1つ目のテキスト:%C%@2/1/D@
2つ目のテキスト:%C%@1/1/D@@p@,9,8@0/-1/m@
3つ目のテキスト:%C%@0/1/D@

130920-8
つまり、%C%の数字1つずつをアイコンに変更しているということです。(0は無)

昼と夜でアイコン画像を変化させる

夜になったら晴れが太陽のマークはおかしい。わかります。なんとかしましょう。

夜っていつさ?

Glaejaに現在時刻を昼か夜か判断する機能はありません。まずは自分自身で何時から何時までが昼で、何時から何時までが夜か定義しましょう。
…ここは適当に5時から17時59分までが昼、18時から4時59分までが夜としましょう。これをなんとかGlaejaで表示する方法はいくつかあります。

$HH$@p@5@p@>@x@$HH$@p@18@p@<@x@==@x@.0@P@

これで5時から17時59分までは1と表示され、それ以外は0と表示されます。

昼と夜でフォルダを分ける

例えば、昼用のアイコンを「1」フォルダに入れ、夜用アイコンを「0」フォルダに入れれば、イメージレイヤーでのパターン文字列は

$HH$@p@5@p@>@x@$HH$@p@18@p@<@x@==@x@.0@P@/%C%

とすればOKです。
また、@0/-1/m@を使って

$HH$@p@n,n,n,n,n,d,d,d,d,d,d,d,d,d,d,d,d,d,n,n,n,n,n,n,n@0/-1/m@/%C%

とすると昼はd、夜はnが表示されます。これは1時間毎に細かく表示分けすることもできます。

昼と夜を分けて文字で表現した後は、やり方もいくつかありますが、フォルダで分けてしまう方法が楽です。画像ファイル数は増えてしまいますけどね。

天気表示の例

実際に天気を表示したウィジェットを作ってみました。わりとよくある感じの天気ウィジェットのレイアウトです。
130920-9

1日分あたり、テキスト(日付)、スプライト(アイコン)、マルチラインテキスト(天気)の3つで構成されています。

日付部分は、

  1. 0@p@%d%@0/-1/m@でその天気情報の日付を取得
  2. @4/-1/d@で日付以外の部分を消去(そのままだと20130921となる部分を4文字目以降を消去して0921にしている。)
  3. @2/0//@で月と日の間にスラッシュ(/)を挿入

というようなことをやっています。
このスキンを公開しましたので、興味が有る方は以下からダウンロードしてください。これを改造すれば、簡単に好きな天気ウィジェットを作れると思います。
weather-sample-2013.zip (507KB)

まとめ

ここまでできれば、天気表示はだいたい出来ると思います。
なにかわからないことや、こういう表示にしたいけどどうしたらいいか?ということがあればメールかコメントいただければ答えることができると思います。

この記事が気に入ったら
いいね!しよう
 シェアする  ツイートする
PREVIOUS POST
NEXT POST
ANDROID
GIVES YOU
MORE