• ベストアンサー

Androidでデジタル時計ウィジェットを作ろうと思っていますが、7セ

Androidでデジタル時計ウィジェットを作ろうと思っていますが、7セグ表示させる方法として一般的な方法をお教えいただけませんか? フォントで出来ればTextViewで呼び出せると思うので簡単なのでしょうが・・・・。

質問者が選んだベストアンサー

  • ベストアンサー
noname#161640
noname#161640
回答No.2

ああ、勘違いをしてました。大変失礼しました。そういうことですと、フォントを探して……という方法は考えられますが、この場合、標準でインストールされていないフォントをどのような形態で配布するか、という問題が出てきます。ですので、やはりグラフィックとして描画するのが最善の道と思います。 1つ1つの部品はシンプルな形状ですから、あらかじめ7つの部品の表示のオンオフをセットにしたデータを用0~9の数字分、配列などで用意し、それを参照しながら描画する、という形になるかと思います。 表示の更新は、それほどの正確さを求めないのであれば、Java SEにあるTimerが使えるので、これを利用すれば簡単でしょう。もっとリアルタイム性を持たせたい場合は、SurfaceViewの場合、ScheduledExecutorServiceというものが用意されており、これを使うことでマルチスレッドな処理を実行できるようになります。 スレッドも使えますが、Androidの場合、コンポーネントはマルチスレッド非対応であるため、別スレッドを使うにはけっこう面倒な処理が必要となります。ScheduledExecutorServiceを利用するとこうした問題を回避してコーディングできますので、スレッドよりは、こっちの使い方を覚えて利用した方がいいでしょう。

hikhikhik
質問者

お礼

早速のご返答まことにありがとうございます。 やはりグラフィックでの描画にて実施しようと思います。 また、ScheduledExecutorServiceのご指摘まで本当にありがとうございます。 時間の正確性をどのように実施していくかは次のテーマだったのですがここまでフォローしていただけるとは感激物です;;。 本当にありがとうございました、頑張って作成していつか公開できるところまでたどり着ければと思います。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

noname#161640
noname#161640
回答No.1

まず、少し勘違いをされているところがあると思いますが、ウィジェットのセルサイズ(セグ?ではなくて、セルです)は、公式には「占有したいセルの数に74を掛けて2を引く」形で指定されます。例えばセル2つ分の高さとセル2つ分の幅(計4セル)なら、高さまたは幅のサイズは((74*2)-2)となり、それぞれ146です。 この値は、あらかじめAndroidManifest.xmlにandroid:minWidth、android:minHeightとして指定しておきます。つまり、ウィジェットは最初から固定サイズで作成されるわけで、まずそのサイズで作るかを決めておく必要があります。 サイズが決まっていますから、それをもとに最適なフォントサイズを決定し、表示すればいいだけです。固定サイズですから、何度も表示を調整して一番いいサイズを見つけ出せばいいだけでしょう。 ちなみに、個人的にはTextViewなどより、Viewを継承してウィジェットを作り、onDrawでCanvasから描画した方がいいと思いますよ。そのほうが軽くなります。ウィジェットのようなものは、コンポーネントを多用するより、すべてViewなりSurfaceViewなりの単体クラスで作り込んだ方がよいです。常時動作するウィジェットは重いと誰も使いたくなくなります。 なお、最近はホームなどで配置するセル数を変更できるものが増えていますが、これらはホームのアプリ側で無理矢理ウィジェットの表示などを調整しています(ですから、よくウィジェットがはみ出たり表示がずれたりするわけです)。開発する際に、公式にサイズ調整される機能が用意されている訳ではないのです。念のため。

hikhikhik
質問者

お礼

早速のご回答ありがとうございます。 ワタシの質問の書き方がよくなかったようで申し訳ありません。 ウィジェットのセルサイズではなく、実は7セグ=7セグメントディスプレィの意味でした。 デジタル時計で数字を表示させる文字(カクカクの文字)のことです。 TTFでフリーフォントの類ではあったのですが、rootをとってインストールしなければならないこともあり、個人使用ではいいですがあまり一般的ではないかなと思いましてこの質問をさせていただいた次第です。 ご指摘のなかでview継承→onDrawが処理が軽くなるアドバイス、ありがとうございます。 TextViewが簡単かなと思いましたが、上記の理由もあって悩んでいたのですが、Canvas描画の方が軽くなるのということであればこちらを使用したほうがよさそうですね。 貴重なご指摘まことにありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • アンドロイド用お勧めウィジェット

    スマートフォン・アンドロイド(android) 用の無料のウィジェットを探しています。 まだ初心者なので、よくわかってない部分もあるのですが、以下がほしい機能です。 ・時計 ・バッテリー残量 ・よく使うアプリが表示される 天気の機能はいりません(パケット使い放題じゃないので)。 もしかすると、もっと素晴らしい機能があるのかもしれません。また時計・バッテリー残量の確認をウィジェットでするよりいい方法があるのかもしれません。その点ももしご存知であれば教えて頂ければ助かります。 お勧めのウィジェットや複数のウィジェットをうまく比較したサイトなどがあれば是非、教えてください。 宜しくお願いします。

  •  アンドロイド端末 アプリのウィジェット化は可能ですか。

     アンドロイド端末 アプリのウィジェット化は可能ですか。  アンドロイド端末を使い始めて、Androidマーケットにアプリがたくさんあります。 アプリはホームにおいても使えないのですが、ウィジェットは置くだけで時計になったり、 天気図になったりとちょっと便利になります。  アプリを何かの方法でウィジェット化することは可能でしょうか?美人時計とか ウィジェットになっていると使い勝手が向上すると思うんですけど。

  • デジタル時計のウィジェットの位置

    AQUOS L (SHV-37)を使ってます。 デジタル時計のウィジェットをディスクトップに 張り付けましたが画面中央に表示されず左寄りに 表示されます。 何が問題でしょうか。 ※OKWAVEより補足:「UQ WiMAX」についての質問です。

  • アンドロイドで遅れない秒がある時計

    現在、秒時計ウィジェットを使用しています。 しかし、1秒くらい遅れて表示されています。 ぴったり合う秒がデジタル表示される時計ウィジェットってありませんか? 使っているのは、F-07D Arrowsμです。

  • AndroidウィジェットでTextViewを表示

    Androidのウィジェットを作っています。基礎をすっ飛ばしてるので分からないのですがサンプルを見ながら作ってます。そこで今突き当たってる壁は 動的にTextViewをウィジェットの上に並べたいんです。動的に作る場合はソースコードで定義するとあったのでアプローチは間違えてないと思いますが、どうしても分かりません。今は TVAry = new TextView[20]; for(int i=0;i<20;i++){ TVAry[i] = new TextView(context); System.out.println( TVAry[i].getId() ); rview.setOnClickPendingIntent(TVAry[i].getId(), pendingIntent); } こんな感じのコードを書いてみましたが動きませんでした。ちなみにこちらのソースコードを参考ベースにして作ってます。 http://www.android-abc.net/category/12739153-1.html あと別件ですが、Eclipseを使っているのですがウォッチ式の追加の仕方が分かりません。英語なので発見できないのかもしれませんが日本語だと監視という項目だとか・・。inspectでしょうか?そういうのは見当たらなかったです。分かる方いらっしゃいましたらこちらもよろしくお願いします。

  • ウィジェットのアナログ時計について

    docomoのプリインストールのウィジェットである、クラシック時計とかモダン時計とかあるじゃないですか??あれのクラシック時計をついこの前からホーム画面に設置したのですが、なんとなく電池の減りがはやくなったような気がします。それまでは1×4の普通のデジタルの時計を置いておいたのですが…。 なにかご存じの方いましたらお願いしますm(__)m

  • ワンピース時計ウィジェットアプリについて

    ドコモのXperia rayを使ってます。3日前ぐらいにワンピース時計ウィジェットアプリをダウンロードしてインストールしました。でもウィジェットに表示すると時計が表示されなかったり、時間が止まったりします。それで時計を再設定したり、再表示すると、した地点でゎちゃんと動くんですけどしばらくするとまた止まったりします。ちなみにインストールしなおそうとするともうマーケットにゎありませんでした。このウィジェットゎダメなんですか?

  • ウィジェットの追加について

    ウィジェットの時計を謝って削除してしまい、再度表示させようとしたのですがウィジェットのリストから消えてしまいました。 (画面長押し→ウィジェットの中に時計がなくなってしまいました) アプリ一覧には表示されておりそこから操作は可能です。 (有効になっています) ウィジェットとして表示させるにはどうすればいいでしょうか。 機種はXPERIA XZ3です。 よろしくお願いいたします。 ※OKWAVEより補足:「ドコモの製品・サービス」についての質問です。

  • Android ウィジェットを探しています

    Super Mapple GPS ロガー というウィジェットをインストールしたいのですがみつかりません。 当方 オフラインでGPSログを記録したく、スーパーマップルデジタル16を購入→ノートPCにインストール→タブレット出力で地図データをタブレットにコピー(レノボB6000-F Androidバージョン4.4.2) この結果 タブレットで地図表示は可能、GPSオンで現在地の表示は可能、しかしログが取れません。インストールガイドによると、表記の”「Super Mapple GPS ロガー」を導入せよ”となっています。導入するとアイコンが「赤りんご」から「青りんご」になる由。そこでGoogleプレイで「Super Mapple GPS ロガー」を検索するもヒットせず という次第です。探し方、あるいは知っている方の回答をお待ちしています。 (※インストールガイドではAndroidバージョン4.2まででした。)

  • ウィジェットについて

    PC-TAB08F01のウィジェットにカレンダーを表示していたのですがAndroid10にアップグレードしたら月表示しかしなくなりました? 1ヶ月分全てを表示する方法が解りません?何方かご教示宜しくお願いいたします。 ※OKWAVEより補足:「NEC 121ware :Android」についての質問です