moxt

Just another Blog site

Androidで超シンプルなWidgetを作りたい

   

情報が少なくてちょっとつまづいたのでメモ。

目標

まずはホームスクリーン上に簡素なViewを表示する。
いきなりあれこれやろうとしても理解できないので。。

必要なもの

下記の4つが必要になる。

  • Widgetの見た目を定義するレイアウトファイル
  • Widgetのメタ情報を定義するAppWidgetProviderInfoオブジェクト
  • Widgetの状態をハンドリングするためのAppWidgetProviderオブジェクト
  • マニフェストファイルにAppWidgetProviderを追加する

次に、必要なファイルやオブジェクトの詳細を書いてゆく。

Widgetの見た目を定義するレイアウトファイル

https://developer.android.com/guide/topics/appwidgets/index.html#CreatingLayout

ドキュメントに書かれてる通り、res/layout以下にxmlファイルを配置すればOK。
たとえばこんな感じ。
TextViewにアプリ名を表示するだけのもの。

Widgetでは使用できるViewに限りがあるので注意する。
とはいえ、ListViewをはじめとした多くのViewが使える。
なので困ることはないと思う。
詳細はドキュメントで。

Widgetのメタ情報を定義するAppWidgetProviderInfoオブジェクト

オブジェクト、と書いているがjavaファイルを作る必要はない。
XMLファイルに必要な情報を書いてゆく。

こんな感じ。

プロパティに関する詳細は下記を参照する。

https://developer.android.com/guide/topics/appwidgets/index.html#MetaData

Widgetの状態をハンドリングするためのAppWidgetProviderオブジェクト

Viewを表示するだけなら具体的な処理の記述は必要ない。
が、一応下記のようなjavaファイルを用意しておく。

マニフェストファイルにAppWidgetProviderを追加する

先ほど作ったExampleAppWidgetProviderクラスについての宣言を追加しておく。

作ったWidgetを表示する

上記の4つの手続きが完了したらアプリを起動する。
これだけではWidgetは表示されない。
Widgetを追加するためにはホームスクリーンを長押し→Widget一覧から作ったWidgetを長押し→ホームスクリーン上に配置、という流れ。

作ったWidgetはこんな感じになった。

unnamed

青いやつね。
これで何もしない超シンプルなWidgetが完成。

 - Android

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

  関連記事

LeakCanaryの仕組みをある程度理解したいマン

Contents1 LeakCanaryとは何か2 …

Androidアプリで使う画像素材の圧縮をgulpで一括処理する

まず、デザイナーやらディレクターやらプロデューサーやらに『圧縮された画像をgitなどのバージョン管理システム上にコミットしてもらえる』そんな幸福な環境であれば無縁な話。 大概の組織では共有ファイルシステムに新しく追加する、もしくは変更された画像をドカッと置かれて「よろしく」って感じだろう。 …

ReactNativeでGiphyのデータを表示する

まずは下記をサクッとパクってみる。 当方、比較的AndroiderなのでAndroidで。 …

GridViewからRecyclerViewに移行したい

GridViewからRecyclerViewにクラス名変えるだけじゃ動かない。 移行過程をメモ。 …

no image
AndroidでGoogleTagManagerを使いたい

Contents1 GoogleTagManagerとは2 …

no image
[WIP]AndroidでParseを使ってみる

今更感溢れてるが。 バックエンドな実装・運用は面倒くさい、Railsとか使い方分からない、的な人はParse良いかもしれない。 …

手を動かしてViewDragHelperを学ぶ(無駄にKotlin)

まず、Youtubeの公式Androidアプリみたいなヤツ作りたくなった。 すでに有志がライブラリ作ってた。。 …

Facebook製の画像ライブラリFrescoのコードを読んでいる

Facebookが新たに画像ライブラリFrescoを公開した。 DraweeView,DraweeController,DraweeHierarchyというクラスを利用したMVC的な構成を成しており、画像を効率よく読み込むようになっているらしい。(雑) …