GoogleAnalytics

SyntaxHighlighter

2011年6月27日月曜日

[Android] Digital Clock Designer

※『DigitalClockDesigner』は2015-03-20をもって
※ Playストアでの公開を停止しました。
※ これまでご使用いただいた皆様に感謝申し上げます。
※ 本エントリは記念に残しておきます。


Android用のフルカスタマイズ可能なカレンダー・デジタル時計ウィジェット『DigitalClockDesigner』をマーケット公開しました。
このウィジェットでは、日付・時刻を構成する「年・月・日・曜日、時・分・午前午後(AM/PM)」等の要素について、フォント・サイズ・色(透過度)や、ウィジェット中での位置・傾きを自由にカスタマイズすることができます。
ダウンロードと readme は続きから…

【ダウンロード】
ココか、右のコードでマーケットにジャンプできます。
【更新履歴】
  • ver. 1.0.6(20110801a版):
    • 誤操作等によりフォントサイズダイアログに不正な値が入力された場合に強制終了していた不具合を修正しました。
      これに伴い、使用できるフォントサイズは2sp.以上400sp.以下となります。
    • ウィジェット設置時の選択リストに表示されるウィジェットサイズが正しくない表記になっていた不具合を修正しました。
      これに伴い、ウィジェットサイズ表記は(横×縦)に変更されます。
  • ver. 1.0.5(20110726a版):背景に画像を表示させていた場合に設定画面に遷移するとクラッシュしていたバグを修正
  • ver. 1.0.4(20110725a版):起動直後等のSDカードにアクセスしづらい状況でクラッシュしていた不具合を修正
  • ver. 1.0.3(20110720a版):表示文字列にSimpleDateFormatとして正しくない文字列を与えた場合、クラッシュせずに表示文字列をそのまま出力するよう修正
  • ver. 1.0.2(20110704a版):文字の下が数ピクセル切れていた不具合を修正
  • ver. 1.0.1(20110701a版):
    • アンカーポイント ][揃え方 ]で「右揃え」が選択できなかったバグを修正
    • 一部機種で[ロケール ]「日本語」を選んだ際に文字化けする不具合を修正
  • ver. 1.0 (20110627a版):マーケット公開
【既知の不具合】
  • [フォントスタイル]で現れるリストダイアログにおいて、デフォルトオンされているスタイルが設定されたものと異なっている場合がある
    → 実際の動作には問題ない。次バージョンアップで対応予定。
【インストール】
インストール後、通常の方法でウィジェットをホーム画面に設置してください。

ウィジェットクリックで設定画面になります(※ランチャーはありません)。
設置できるウィジェットサイズは、「1×1、1×2、2×1、2×2、3×1、3×2、4×1、4×2×」です。

ホーム画面には、異なるサイズのウィジェットをいくつでも設置することができ、各々に異なったスキンを適用することができます。

【設定】
ウィジェットをクリックすることで、下図の設定画面になります。

背景に画像を表示 ]にチェックを入れると、ファイル選択ダイアログが表示され、SDカード直下の「com.gmail.kanitawa.dcd/images/」以下にある背景として表示したい画像ファイルを選ぶことができます。画像ファイルには、透過度を含む 24 ビットPNG画像ファイルを使用してください。

ロケール ]をクリックすることで、ウィジェット表示に関わる言語設定(日本語・英語)を選ぶことができます。この設定によって、曜日(水/Wed)や午前午後(午前/AM)が変化します。
※現バージョンでは[ロケール ]設定はスキン全体で共通で、「月名」「曜日名」の日本語・英語表記を混在させることはできません。

設定画面で[Menu]ハードボタンを押すと、右図オプションメニューが表示されます。
スキンの読み込み ] で、SDカード直下「com.gmail.kanitawa.dcd/skins/」以下にあるスキンファイルを読み込むことができます。

スキンの保存 ]で、現在のウィジェットのスキンを上記フォルダーに指定した名前で保存できます。
※ スキンファイルは「.skin」という拡張子を付けてありますが、中身は設定がJSON形式で書かれたテキストファイルですので、エディタ等で編集することが可能です。

※ 背景画像とウィジェットサイズについて
背景に画像を表示 ]しない場合のウィジェット描画可能領域は、「縦 100 dp×横 80 dp」を1マスとして使用するウィジェットサイズ分だけ足しあわせたものになります。つまり、「縦2×横3」のウィジェットの場合ですと「縦 200 dp×横 240 dp」となります。
背景に画像を表示 ]した場合はちょっと複雑で、用いる画像のピクセル数と、デバイスのピクセル密度で異なってきます。
まず、用いる画像のピクセルサイズを、そのまま「画像の dp サイズ」だと考えます(つまりピクセル密度 160 dpi で描かれたと考える)。そして、その dp サイズと上記「背景に画像を表示 」しない場合のウィジェット描画領域の大きさをくらべて、はみ出る部分は画像の左上を基点としてクリッピングします。このことは、デバイスのピクセル密度によって画像の実表示される大きさが変わらないという利点がありますが、ピクセル密度の高いデバイスでは画像が拡大表示されてしまうため劣化するという欠点もあります。
…例えば、「縦 60 px×横 200 px」の画像を「縦1×横2」のウィジェットに表示する場合、ウィジェット描画可能領域は「縦 100 dp×横 160 dp」なので、画像の右端 40 px分が削られます。
これを QVGA(320×480)デバイスで表示する場合は「ドット・バイ・ドット」で表示されるんですが、WVGA(480×800)デバイスの場合には画像が「480÷320 = 1.5」倍に拡大されて表示されることになります。

設定画面の[スキンの編集… ] をクリックすると、下図のスキン編集画面になります。

「スキン」を構成する各表示要素(タイポグラフィ)がリストとして表示されており、実際のウィジェット描画では、このリストの上から順に描画されていきます。
リスト項目を長押しすることで、項目の[1つ上へ移動 ][1つ下へ移動 ][削除 ]が行えます。項目の描画重なりを変えたい場合は[1つ上・下へ移動 ]を使用してください。
新しいタイポグラフィを追加するには、リスト末尾の[新規追加 ]をクリックしてください。

スキン編集画面で編集したいタイポグラフィ項目をクリックすると、下図のタイポグラフィ編集画面になります。
タイポグラフィの設定は、[表示文字 ][フォント ][アンカーポイント ]からなります。

表示文字 ]は、
  • 表示文字列 (表示される要素を表す記号)
  • 文字サイズ (単位 sp)
  • 文字の色 (透過度を含む16進表記)
  • 文字の背景色 (透過度を含む16進表記)
からなります。
※表示文字列について
表示文字列の記号は[java.text.SimpleDateFormat]で用いられ、以下のような記号があります。
記号意味表示例
日本語英語
G紀元AD西暦
y西暦年(下2桁)1111
yyyy西暦年(4桁)20112011
M月(数値)99
MM月(数値)0909
MMM短い月名9月Sep
MMMM長い月名9月September
d33
dd0303
E短い曜日名Sat
EEEE長い曜日名土曜日Saturday
a午前/午後午後PM
H時(24時間)
※0時表記
00
k時(24時間)
※24時表記
2424
K時(12時間)
※0時表記
00
h時(12時間)
※12時表記
1212
m77
mm0707
※シングルクォートで囲まれた文字列は上記解釈を受けずに、そのまま表示されます

フォント ]は、左図のような項目からなります。
外部フォントを利用 ]をチェックすると、下の[外部フォント名 ]が選べるようになり、SDカード直下「com.gmail.kanitawa.dcd/fonts/」以下にインストールしたフォント(ttfフォント)が使用できます(その代わり、[ファミリー名 ]と[フォントスタイル ]が選択不可になりますので、ボールド等を使いたい場合は、ボールドフォントをインストールしてください)
外部フォントを利用 ]をチェックしない場合、[ファミリー名 ]で組み込みフォントのファミリーを、[フォントスタイル ]で[ノーマル、ボールドイタリックボールド・イタリック]を選びます。

アンカーポイント ]は、上記設定した文字列を描画するときの基準点と、その基準点に対する文字列の揃え方、および文字列の傾きからなります。

水平アンカーポイント ][垂直アンカーポイント (単位 dp)で 描画基準点を設定します。
揃え方 ]が[左揃え ]なら、文字列左端、[右揃え ]なら文字列右端、[中央揃え ]なら文字列中央が基準点に揃うよう描画します。
※ このとき文字列高さ方向は、いわゆるベースラインが基準点に乗るように描画されます(文字列中心高さではない)
文字列の傾き ]は 水平に対する文字列の傾き(時計回り方向がプラス)を「度」単位で指定します。


【おまけ】
サンプル画面で使用しているスキンを以下にアップしておきます。組み込み以外の外部フォントは同梱せず、リンクのみです。
ダウンロードした zip ファイルを解凍し、
「images/」以下のファイルを実機SDカード直下 「com.gmail.kanitawa.dcd/images/」以下に、
「skins/」以下のファイルを同「com.gmail.kanitawa.dcd/skins/」以下にインストールしてください。

himekuri』(1×1)
 iPh○neアイコン風のカレンダースキンです。
himekuri2』(1×1)
日本語の日めくり風カレンダースキンです。
shitteruga』(2×2)
(今日の日付を)知ってるがお前の態度が気に入らない。
corner-calendar』(2×1)
R○inmeter用スキン「C○rnerCl○ck」風のカレンダースキンです。

keep-out』(4×1)
曜日と午前/午後の表示に使ってるフォントは「SF Minced Meat Bold.ttf」です。
cross-over_white-red』(1×1)
Android時計ウィジェットの定番「B○bCl○ck」風の時計スキンです。
アレみたいにグラディエーションはかけられませんがorz
simple_clock_ampm』(2×1)
シンプルな時計スキンです。

38 件のコメント:

匿名 さんのコメント...

ウィジェット使わせていただいております。
『corner-calendar』がダウンロードできませんでした。
リンクを修正していただけますでしょうか?
宜しくお願い致します。

kanitawa さんのコメント...

申し訳ありませんでした。リンク修正しておきました。

匿名 さんのコメント...

迅速な御対応、ありがとうございました。
早速ダウンロードして自分好みにカスタマイズしたいと思います。

匿名 さんのコメント...

正常にインストールしましたが、開くことができませんでした。

kanitawa さんのコメント...

作者です。
これは普通のアプリではなく、ウィジェットですので、インストールしてもドロワーには登録されません。
ホーム画面を長押しして、ウィジェットを設置してください。

匿名 さんのコメント...

先日DLさせて頂いて以来、ずっとお世話になってます。

間違って触れる度に、設定画面が出てきてしまうのでウィジェットタッチ禁止の設定を増やしていただけませんか?

匿名 さんのコメント...

外部フォントを利用しようとすると、外部フォント名の欄でフォント選択出来ずに強制的終了してしまいます。私のやり方が間違っているのでしようか? ちゃんと指定のフォルダにはインストールしたはずなんですが‥ 実は使い方がよくわかりません‥ ちなみにzipファイルです

kanitawa さんのコメント...

> ちゃんと指定のフォルダにはインストールしたはずなんですが‥
> 実は使い方がよくわかりません‥ ちなみにzipファイルです

ZIPだと選択ダイアログに出て来ませんね。
ZIP解凍して、拡張子が「.ttf」のファイルをインストールしてください。

匿名 さんのコメント...

迅速な回答ありがとうございます。とても有難いです。
再び挑戦してみましたが、やはり強制終了してしまい駄目でした。
‥大変恐縮ですが、詳しい手順を教えて頂けませんか?お願いします。

kanitawa さんのコメント...

> ‥大変恐縮ですが、詳しい手順を教えて頂けませんか?

まず、あなたがインストールしようとしているフォントについて、そのダウンロード元をお教え下さい。

匿名 さんのコメント...

ウィジェットをホームに設置しても表示されません。
削除はドラッグで出来るのですが、設定もできません。
何故でしょうか?

kanitawa さんのコメント...

> ウィジェットをホームに設置しても表示されません。
> 削除はドラッグで出来るのですが、設定もできません。

あなたが設置しているのは、きっと「ウィジェット」ではなく、「アプリケーションのショートカット」です。

ホーム画面長押しで『ホーム画面に追加』ダイアログを出し、そこの『ウィジェット』をタップして、ウィジェットを選択して設置してください。

匿名 さんのコメント...

早い返答ありがとうございます。
しかしお答えいただいた方法で設置しています。

kanitawa さんのコメント...

> しかしお答えいただいた方法で設置しています。

そうでしたか、それは申し訳ありませんでした。

…ふむ、なんでだろ……

もしかしたら、壁紙が黒っぽい色じゃないですか?
DigitalClockDesignerの設置デフォルト表示の文字色は「黒」なので、壁紙が黒っぽいとまぎれて見えないのかも知れません。

一時的に壁紙を変えるか、画面の空いたところをタップしまくってみてくださいw

kanitawa さんのコメント...

> しかしお答えいただいた方法で設置しています。

今おもいついたんですが、少し別の理由があるかもしれません。

よろしければ、お使いの機種と、設置しようとしているウィジェットサイズをお教え下さい。

一部を除く高解像度の機種では「4×2」は設置しても表示できない不具合があります。

匿名 さんのコメント...

いえ、白っぽい壁紙です
なので逆に黒っぽい壁紙にしても駄目でした。
タップしまくっても駄目です
こちらで作られた他のウィジェットを試しに使わせていただいたら、そちらは問題なく使えたのです・・・

匿名 さんのコメント...

機種はGALAXY SⅡ
サイズは全て駄目でした
大変お手数をお掛けしますが、お願いいたします。

kanitawa さんのコメント...

> サイズは全て駄目でした

う~ん、、、ちょっとわかりませんねぇ…

アプリアンインストール→再インストールか、
本体再起動くらいしか試してみる手は思いつかないですねぇ…

> 削除はドラッグで出来るのですが、設定もできません。

これは、
・ウィジェットを設置してもホーム画面の見た目には何も変化がない
・ホームの空いた空間をタップ&ホールドすると画面下部にウィジェットゴミ箱が現れるので、そこに透明のウィジェットが置かれていることがわかった。
・その透明ウィジェットをゴミ箱にドラッグすると削除することができる。
・その透明なウィジェットをタップしても設定画面は現れない

ということですか?

また、ウィジェットを設置し、ホーム画面に何も表示されていない状態で、
・設定→アプリケーション→実行中のサービスを開き、その中に「DigitalClockDesigner」の「UpdateService」があるかどうかを確認してみてください。

…いずれにしても、それではっきりと原因がわかるもんではないのですが…

匿名 さんのコメント...

本体再起動したら使えるようになりました、お騒がせいたしました。
なっていた状態としてはkanitawa様のあげた4つの状態で間違いありません。
ちなみに実行中のサービスで確認もしましたがありませんでした。

大切に使用させていただきます
本当にお騒がせいたしました。

kanitawa さんのコメント...

> 本体再起動したら使えるようになりました、お騒がせいたしました。

それはよかったです。
再起動で治るのはよくあることですw

> 大切に使用させていただきます

とてもありがたいお言葉で作者冥利に尽きます

U さんのコメント...

Digital Clock Designer使わせていただいてます。

フォントは本体にプリインストールされたものを使うことができますでしょうか?
IS05の場合「モリサワ 新ゴ R」などです。

うまく伝わらなかったらごめんなさい。

kanitawa さんのコメント...

> フォントは本体にプリインストールされたものを使うことができますでしょうか?

「外部フォントを利用」にチェックを入れなければ、
自動的に内蔵フォントである「モリサワ 新ゴ R」が
使われますよ。

U さんのコメント...

お返事ありがとうございます!

チェックをいれなかった場合、
ファミリー名とフォントスタイルがタッチできるようになりました。
この2つはどれを選べばいいのでしょうか?

kanitawa さんのコメント...

ああ、すいません、勘違いしてました。

結論から言うと、、、出来ませんね。
多分、どんなフォントがプリインストールされていても、
「外部フォントを利用」がチェックされていない状態だと、
日本語は内蔵のDroidSansが使われるはずです。

これはフォントファミリーやスタイルのどれを選んでも
かならずDroidSansになってしまいますね。

…あまり、日本語の内蔵フォントを使いわける、ってのを
考慮していなかったですね。

U さんのコメント...

了解しました

モリサワ 新ゴ Rに近い外部フォントを探してみます。

ありがとうございました!

kanitawa さんのコメント...

…一応、言い訳をさせてください。

日本語フォントとして、すべての機種で絶対に使えると保証されているのは「DroidSans」だけです。
というか、プログラム内で特に指定しないで日本語表示させると、OSが無条件に「DroidSans」で表示してしまいます。

で、「モリサワ」や「LC」などの追加プリインストールされた日本語フォントは、あくまでもメーカーが独自にインストールしているものであって、当然、機種によってインストールされているフォントは異なります。
同じメーカーでも機種によってインストールフォントが異なっていることすらあります。
https://sh-dev.sharp.co.jp/android/modules/download/?/api_font

さて、プログラム内では「フォントAlias名」ってのを指定してやれば、表示させるフォントを切り替えることができるんです。

ところが、プリインストールされた日本語フォントの「フォントAlias名」の一覧をプログラム内で取得することは、実はできないんです。
※以下のSharpのAndroid開発フォーラムの記事リンク
https://sh-dev.sharp.co.jp/android/modules/d3forum
/index.php?topic_id=138

つまり、インストールされているフォント名は機種により異なるが、そのAlias名をプログラム内で知ることはできない、ってわけです。

他のメーカーのではできるのかもしれませんが、1機種でもできないのであれば、それは一般に公開されるソフトウェアとしてみれば、全くできないのと同じ事です。

というわけで、どんな機種でも独自に追加されちる日本語フォントを、フォント一覧に出して、そこから選ばせる、というのは不可能なのです。

U さんのコメント...

詳しい説明ありがとうございます!

無理をいってしまう形になり申し訳ありませんでした。


自分なりに再現させてみたいと思います。
大事に使わせていただきます
本当にありがとうございました!!

かわち さんのコメント...

カスタマイズの自由度が広く重宝しています。
ありがとうございます。

一つお願いなのですが、秒表示に対応していただけると大変嬉しいです。
ssで試した所、アプリを閉じた時の秒数が表示された後は動かず、00秒になると00の表示に変わった状態のままでした。

検討、お願いします。

kanitawa さんのコメント...

>>かわち 様
> 秒表示に対応していただけると

現状では1分に1回、ウィジェット画面の書き換えを行なっています。なので秒の数値が変化しないわけです。
これを1秒に1回に変更すると、1秒ごとに秒数値が変わるようになるのですが、電池消費量が60倍になりますよ。

というわけで、申し訳ありませんが、秒数表示には対応する予定は今のところありません。

匿名 さんのコメント...

ウィジェット選択で適当にサイズを決めて設置しましたが透明のままで選択しても設定画面が出てきません(ノД`)ちなみにbatteryの方のアプリは大丈夫でした!arrowsZ

kanitawa さんのコメント...

> 設置しましたが透明のままで選択しても設定画面が出てきません

稀に起こる現象です。
そのまま放置してれば、そのうち(1分弱程度)で表示されると思います。
もしそれでも表示されなければ、アンインストール→端末再起動→再インストールを試みてください。

匿名 さんのコメント...

出来ました!ありがとうございます!
ついでと言っては何ですが
曜日【英語】は全部大文字にはできませんか?

kanitawa さんのコメント...

> 曜日【英語】は全部大文字にはできませんか?

「DigitalClockDesigner」では出来ません。
よろしければ「Glaeja」のご利用をご一考ください。

匿名 さんのコメント...

初めまして!自分もDigital Clock Designerを愛用させて頂いております

4×2サイズに切り替えようとして設置したのですが、どうも他の方々が訴える問題と同じように空っぽのウィジェットが出てしまいます
放置・再起動・アンインストールなども試してみましたが解決できません
お手数ですがお返事お願いします

ちなみに機種はXperia NXです

kanitawa さんのコメント...

一部機種を除き、4×2サイズのウィジェットの中身が描画されないのは仕様というかAndroid側の制限の問題です。

DigitalClockDesignerでは、ウィジェットを一度ビットマップに描画してから、そのビットマップ画像をウィジェットに貼りつけているのですが、このとき「画像サイズが512KBを超えるものは貼り付けられない」、というAndroid側の制限があるんです。

「だったら4×2とか選択画面に入れておくな!」というお声もいただくのですが、画面解像度の低い一部機種では4×2でも512KBを超えないので、それらで使えるように入れてあるわけです。

この制限を克服する方法はあるにはあるんですが、「ものすっごく面倒くさい&改修箇所がとっても多い」ので、DigitalClockDesignerにこの改修を加える予定はありません。

よろしければ、後継ウィジェットである拙作『Glaeja』のご利用をご検討いただけますでしょうか。
『Glaeja』ではこの「512KB」問題は克服されておりますし、DigitalClockDesignerからのスキンインポートも可能となっております。

匿名 さんのコメント...

初めまして。
Digital Clock Designer 使わせて頂いてます。
色々検索したのですが分からないことがあるので教えて下さい。
フォントサイズを大きくすると文字がかけてしまうのですが
画面いっぱいに設置したい場合どうすればいいのでしょうか?

ちなみに3×2でやっています。4×2は出ません。
お忙しいと思いますが宜しくお願い致します。

kanitawa さんのコメント...

ウィジェットというものはどれでも、その「サイズ」を超えた範囲への描画はできません。

ホームが4×4分割だとして、ウィジェットサイズ「3×2」なら、ホーム全体の「横3/4×縦2/4」の範囲内でしか、いかなる描画も許されていません。

ですので、この範囲を超えるようなフォントサイズにしても「文字が欠け」て描画されます。


…さて、これを克服するには単純にウィジェットのサイズを大きくすれば良いわけなんですが、

> 3×2でやっています。4×2は出ません

『DigitalClockDesigner』では(一部機種を除き)「4×2」のウィジェットがホーム画面に表示されません。これはAndroid側の制限によるものです。

この制限を回避する方法はあるのですが、『DigitalClockDesigner』でそれを実装する予定はありません。このアプリは既に開発が終了したアプリです。

後継である『Glaeja』では、この制限が回避されておりますので、そちらへの移行をご検討ください。

匿名 さんのコメント...

早速のお返事ありがとうございます。
Glaeja・・・自分で設定できるか不安ですがチャレンジしてみます!

ありがとうございました。