Zooper勉強中:縦書きの日付表示

これまでもいくつかZooper Widgetの基本的なことを勉強してきました。
が、まぁやっぱり、とりあえず作ってみて、○○をやりたい→どうすればできるか?→どんな機能を使えばいいか?と試行錯誤してみるのが結局は理解が早いってもんです。

今度のコミケでも出す「Androidのホーム画面をカスタマイズする本2」では、Glaejaを使って、いろいろなテクニックというか、こういうときはこうすればいいよ的なものを書いたのですが、それと同じようなのをZopperでどうやって実現すればいいか、というのをやってみようと思います。
全部が全部できるわけではないでしょうけど、とりあえずできるか考えてみましょう。

まず今回は「日付を漢字にして縦書き表示」というのをやってみます。

幅を狭めて縦書きにする

131220-1
まず、普通に日付を表示すると、テキストモジュールで

#DM#月#Dd#日

これで12月20日などと表示されます。

これをリッチテキストで入力し、X マージンを大きく取っていくとそのうち1文字や2文字で行が折り返されるようになります。

これで縦書きっぽくなりました。

月の数字を漢数字にする

131220-2
次に月の数字を漢数字にします。

$#DM#=12?十二$

これで12月の時には「十二」と表示されます。その他の月の時はなにも表示されません。なので、これを十二ヶ月分作って

$#DM#=12?十二$$#DM#=11?十一$$#DM#=10?十$$#DM#=9?九$$#DM#=8?八$$#DM#=7?七$$#DM#=6?六$$#DM#=5?五$$#DM#=4?四$$#DM#=3?三$$#DM#=2?二$$#DM#=1?一$月

これで月の部分が漢数字に変換されます。「十二月」じゃなくて「師走」とかにしたければそれでもOKです。「壱」とかにしたければそうしてください。

日の数字を漢数字にする

日の数字を漢数字にするときも同じように31日分でやれば、それでOKです。
…とは言っても31個はさすがに辛いです。もうちょっと考えてみましょう。

十の位と一の位の2つに分けて考えてみましょう。
十の位は0から3の4通り、一の位は0から9の10通りしかありません。31個作るよりは楽そうです。

十の位を取り出して漢数字に

131220-3
では十の位を漢数字にしてみましょう。そのためには十の位だけ取り出さなければなりません。

$(floor(#Dd#/10))$

これで十の位だけを取り出せます。

「#Dd#/10」は日付を10で割っています。26日なら2.6となります。
floor(xxx)はxxxの値を切り捨てで整数化します。
なので、26日の時は$(floor(#Dd#/10))$は2と表示されます。あとは先ほどと同じように漢数字化します。

$(floor(#Dd#/10))=1?十$$(floor(#Dd#/10))=2?二十$$(floor(#Dd#/10))=3?三十$

floor(#Dd#/10)が0の時は何も表示されません。

一の位を取り出して漢数字に

131220-4
次に一の位だけを取り出して、同じように漢数字化します。

$(#Dd#%10)$

%は、その後の数字で割った時の余りを表示します。この場合は日付の数字を10で割った余りとなります。これが日付の一の位になります。

あとは同じように漢数字化してあげればOKです。

$(#Dd#%10)=1?一$$(#Dd#%10)=2?二$$(#Dd#%10)=3?三$$(#Dd#%10)=4?四$$(#Dd#%10)=5?五$$(#Dd#%10)=6?六$$(#Dd#%10)=7?七$$(#Dd#%10)=8?八$$(#Dd#%10)=9?九$日

完成

131220-5
ここまでのをまとめるとこんな感じです。長ぇ…。

$#DM#=12?十二$$#DM#=11?十一$$#DM#=10?十$$#DM#=9?九$$#DM#=8?八$$#DM#=7?七$$#DM#=6?六$$#DM#=5?五$$#DM#=4?四$$#DM#=3?三$$#DM#=2?二$$#DM#=1?一$月$(floor(#Dd#/10))=1?十$$(floor(#Dd#/10))=2?二十$$(floor(#Dd#/10))=3?三十$$(#Dd#%10)=1?一$$(#Dd#%10)=2?二$$(#Dd#%10)=3?三$$(#Dd#%10)=4?四$$(#Dd#%10)=5?五$$(#Dd#%10)=6?六$$(#Dd#%10)=7?七$$(#Dd#%10)=8?八$$(#Dd#%10)=9?九$日

131220-6
余計な改行を取り払い、フォントなど調整すれば完成です。

余談

本当はもっと他の例もたくさん出して1つの記事にするつもりでしたが、縦書きだけでそれなりの量になってしまったので(疲れたので)1つだけで出しちゃいます。
何が疲れるって、日本語入力の部分ですよね…。

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