2011年7月25日月曜日

[Glaeja] やわらかい手

…というわけで『Glaeja』のスキンチュートリアルその2です。
今回は[ハンド ]レイヤーを使ってみましょう。



1.アナログ時計を作ってみる

…ぶっちゃけ、[ハンド ]レイヤーとか[時刻エスケープキャラクタ]の拡張($ i $)とか、アナログ時計作るためッスからw

1.ウィジェットを配置し、スキン編集画面を開きます。ここで[実ピクセル]値を覚えておきます。
左図は 160 dpi のエミュレータなので DIP と同じ値です。

2.上の[実ピクセル]に収まるように、時計文字盤画像を「32ビット透過PNG」で作成します。

このとき、針位置合わせがしやすいよう、文字盤中心に目印を入れておいてください。





3.[イメージ ]レイヤーを作成し、2.の文字盤画像ファイルをセットします。








4.[シャドウ ]レイヤーを新規追加し、先の[イメージ ]レイヤーの1つ上に移動します。

シャドウ ]レイヤーの設定を調整し、好みの影をつけます。










5.[ハンド ]レイヤーを新規追加し、[回転中心 ]が文字盤の中心にくるよう位置を調整します。







6.設定値を、

・ [現在値となる項目 ]: 「$m$」(現在の分)
・ [最大値となる項目 ]: 「60」
・ [0%の絶対角度 ]: 「0°」
・ [100%の絶対角度 ]: 「360°」

にして長針にする。色や幅はお好みでどうぞ。


7.上の[ハンド ]レイヤーを複製して追加し、

・ [現在値となる項目 ]: 「$i$」(午前/午後における分)
・ [最大値となる項目 ]: 「720」(=12時間×60分)

として短針にします。
終点の距離 ]を短くして短針っぽくし、色・幅はお好みで(青焼き針っぽくしてみました)。



これで完成です。各針へのシャドウはお好みで。長短針の[始点の距離 ]は、ゼロだと重なった部分がカッコ悪いので、「-10 dp.」とかにしてほうがイイです。





2.Weekday レトログラードを作ってみる

[ハンド ]レイヤーは、0~360°グルっと針が回るものじゃないとダメってことはありません。[0%の絶対角度 ][100%の絶対角度 ]を変えれば、『Battery Designer』チュートリアルで作成したテスター風ゲージのようなものも作れます。

同じもの作ってもツマラないので、Weekday レトログラードを作ってみましょう。
“レトログラード”は、腕時計の曜日カレンダー機構の一種で…まぁググってくださいw

1.[ハンド ]レイヤーを新規追加して、[回転中心]をウィジェット左端真ん中あたりにし、[0%の絶対角度 ]を「15°」、[100%の絶対角度 ]を「165°」にします。

 [現在値となる項目 ]を「$f$」(週における曜日、日曜がゼロ、土曜が6)に、[最大値となる項目 ]を「6」にすれば、もうWeekday レトログラードの出来上がりw


2.針だけじゃ寂しいので文字盤も入れてみました。

今日の曜日を[マッチテキスト ]レイヤー使って色とか変えたい、ってんじゃなければ、画像ファイル用意して[イメージ ]レイヤー使うほうがラクですね。





このエントリ書くのにかかった時間の8割くらいは、エミュレータのGCと「keyDispatchingTimedOut」待ちですヨ…エミュレータ糞すぎ

9 件のコメント:

  1. 夜分遅くにコメント申し訳ありません。
    Glaejaの数ある機能の内の5%くらいしか理解出来ていない当方に御教授願います。
    weekdayレトログラードスタイルでバッテリーの下1桁の表示を
    再現したいのですが...私のオツムが働きません...
    気長に待ちますので、kanitawa様のお時間に余裕があるときで構いませんので御教授願います。

    返信削除
  2. >>l-bites 様

    バッテリー残量の下一桁自体は「#PP#@0/1/\D@」で抽出可能です。
    この数値は0~9までなので、ハンドレイヤーを
    [現在値となる項目]:#PP#@0/1/\D@
    [最大値となる項目]:9
    とすれば良いでしょう。開始・終了角は好みの角度で適当に。

    返信削除
    返信
    1. 早速の御教授ありがとうございます。
      Glaejaの自由度の高さと可能性にワクワクしてしまいます。
      私にはなかなか理解できない部分が多すぎますが...
      Glaejaに出会ってからはAndroidのカスタマイズの楽しみレベルが
      あがりました。
      これからもこんな気持ちにしてくれるアプリ開発がんばってください。
      もしかしたら今後も些細な質問をすると思いますが...宜しくお願いします。

      削除
  3. 32ビット透過PNGとは何ですか?調べてもよく分からなくて…

    返信削除
  4. > 32ビット透過PNGとは何ですか?

    「アルファ付き」とか「アルファチャンネル付き」PNGとも言いますね。

    "PNG"は画像を構成する画素がどのようにファイル内で並んでいるか、とかそういうファイル形式を表すものなので割愛します。

    画像ファイルの画素は、その色を赤(R)・緑(G)・青(B)の三原色がどのくらいずつ含まれているか、という情報で表します。
    このRGBの含まれる量を表現するのに各々1バイト(8ビット)使いますので、1画素につき合計24バイト必要になります。

    なので、一般的な画像ファイルは「24ビット~ファイル」という言い方をします。24ビットPNGとか。

    さて、、、1バイト(8ビット)足りませんねw
    「32ビット透過PNG」は、上記「24ビットPNG」に『画素の透過度(透明度)』という情報を1バイト加えたものになります。
    つまり1画素ごとに「どのくらい透明か」という情報(透過度とか透明度といい、省略記号は"A"とか"T")が1バイトくっついたものですね。

    このファイル形式だとドロップシャドウのような半透明な効果のついた画像を表現することが可能です。

    返信削除
    返信
    1. 素早い回答有難う御座います。
      やっと理解できました

      削除
  5. すみません。とても初歩のところでつまづいています。
    手順3のところでイメージレイヤーを追加したあと、画像ファイルを指定する方法がわかりません。
    「ファイル名」をタップしても、テキスト(ファイル名)の入力もできませんし、ファイルの一覧や画像の一覧も表示されません。
    透過PNGは作成できていてSDカードに保存してあります。
    ここからどうすればよいのでしょう?
    Android 2.3.6です。

    返信削除
  6. > 透過PNGは作成できていてSDカードに保存してあります

    SDカードのどこに保存されていますか?
    Glaejaは、SDカードの「com.gmail.kaniwata.glaeja」フォルダ内の「images」フォルダの画像しか取り扱えません。

    返信削除
  7. できました。
    フォルダ固定とは気付きませんでした。
    ありがとうございました。

    返信削除