ActionBarタブ・ドロップダウンリストの置き換え方法まとめ

はじめに API level 21以降、NAVIGATION_MODE_LISTやNAVIGATION_MODE_TABSといったActionBarと連動したナビゲーション要素が非推奨となりました。 これらのUIの置き換え方法についてはAndroid Developersで該当定数のリファレンスに「Consider using other c…

2014発売Android端末のdp解像度まとめ

はじめに Android端末は機種数が多く、OSバージョンやハードウェアがそれぞれ異なるためにAndroidでアプリを作ることは大変だと言われています。 特にディスプレイについてはそれぞれが異なった画面サイズや解像度を持つため、Androidの画面設計は複雑だと思…

AppIndexingについて

AppIndexingとは AppIndexingとは、ウェブページURLやキーワードとアプリの特定画面へのディープリンクを紐付け、Google検索結果から直接アプリの特定画面を起動させるための仕組みです。 現在はウェブサイトにアプリ用ディープリンクを埋め込む方法(狭義のA…

Android 5.0 差分メモ

自分用あとで読むメモ Android 5.0 概要 Android Lollipop | Android Developers 新API 概要 Android 5.0 APIs | Android Developers API 差分 API Differences between 20 and 21 Support Library 変更点 Support Library | Android Developers Support Lib…

【Android】いまさら聞けないdp入門 という記事を更新しました。

Qiitaに書いていた【Android】いまさら聞けないdp入門 - Qiitaという記事を更新しました。 (この記事も元々は同じ内容を記載していましたが、両方メンテすると大変なのでQiitaへのリンクページにしました) さすがに公開から1年以上経つとAndroid Developers…

Androidアプリのタブレット対応レイアウトまとめ

はじめに タブレットとスマートフォンの最大の違いは画面の横幅です。 Androidアプリをタブレット対応させる際は、いかにして画面の横幅を埋めるかが重要になります。 この記事では余白を埋める様々なパターンについて解説しています。 Android Developersの…

Android UI/UX アンチパターン

参考資料 Android Developers Amazon.co.jp: Smashing Android UI レスポンシブUIとデザインパターン: Juhani Lehtimaki, 佐藤 伸哉, 株式会社クイープ: 本 画面全般 スプラッシュ画面 必要のないスプラッシュ画面の表示はやめましょう。 なぜダメか 多くの…

Androidソースコードレビューで指摘する事が多い項目まとめ

業務でソースコードレビューを行う機会が増えたので、複数回指摘した項目や気になった実装などをまとめてみました。 こういう観点をできる人と共有できるといいなあ…。 2014/09/29 23:00 一部修正しました。 業務上ソースコードレビューの名目で仕様・デザイ…

ListViewのpadding設定

ListViewにpaddingを設定する ListViewで子要素の配置を調整する場合、通常はandroid:paddingで描画領域を、android:dividerHeightで子要素同士の間隔を設定する。 この時、単純にandroid:paddingだけ指定すると以下のようにリストの上下端で子要素が途切れ…

3行未満のAndroid Tips集

記事にするまでもない3行未満で書けるレベルのTipsとリンク集。 常識レベルのものも含む。 URLのパスの結合にはUri.withAppendedPathを使う スラッシュの重複を省いてくれて便利。 http://developer.android.com/reference/android/net/Uri.html DBのColumns…

はてなブログはじめた

Markdownに慣れきってしまうとBloggerで日記を書くのが苦痛になったのではてなブログを始めた。 とりあえずQiitaに書いた記事も転記してみたが、体裁が一部おかしいかもしれない。 Qiitaに投げるまでもない小ネタとかはこっちにまとめていきたい。 コンゴト…

買ってよかったAndroid関連電子書籍まとめ

Androidの技術書、どうせ買うなら電子書籍がいいよね!と電子書籍をあちこちで買ったり買い直したりしてるので知見を共有します。 どこで買うべきか 電子書籍で技術書を購入する際、なるべく制限の少ないものを探すことが重要です。 何も考えずに買ってしま…

設定画面のインテントアクションまとめ

はじめに Androidでは、アプリが必要な権限を持っていれば、アプリから端末の設定(一部)を変更することができます。 この仕組はアプリが必要とする機能を確実に使用するためには有用ですが、インストール時に設定変更権限が必要な旨がダイアログ表示されてし…

画面回転時のActionBarの挙動まとめ

はじめに ActionBarの一部の機能は、端末の画面の向きによって挙動が異なる場合があります。 この記事では特に画面回転時に大きく挙動が変わる部分についてまとめました。 MenuItemの表示数が変わる ActionBarに表示されるMenuItemの数は画面幅のdpによって…

SyncAdapterの実装メモ

SyncAdapterとは SyncAdapterとは、AccountManager上のアカウントとContentProviderを紐付けることにより、クラウド上のデータと端末のデータを同期させる仕組みです。 一般的な動作としては「ContentResolverにAccountManagerのアカウントとSyncAdapterを登…

AccountManagerでアカウントを管理する

はじめに AccountManagerにおいて、アカウントの管理やトークンの取得を直接行うクラスのことをAuthenticatorと呼びます。 それにあわせて、この記事ではAuthenticatorを実装したアプリのことをAuthenticatorアプリと呼ぶことにします。 Authenticatorアプリ…

AccountManagerを利用する

AccountManagerとは AccountManagerとは、Androidにおいて様々なWebサービスのアカウントを管理するための仕組みのことです。 アプリはAccountManagerを利用することで以下のような様々なことができるようになります。 アカウント情報の取得 アカウントの編…

ActionBarのメニューにCheckBoxを表示する

前置き ActionBarでは、メニューをすべて表示することができなかったり"showAsAction="never"を設定したメニューがある場合、一部のメニューをActionBar右端のドロップダウンに格納することがあります。 Andorid Developersではこの機能をAction Overflowと…

トグルボタンの実装

トグルボタンとは トグルボタンとは、ユーザが2つの状態(On/Off)を交互に切り替えることのできるUIです。 AndroidではToggleButtonやCheckBoxがこれに当たります。 API Level 14でON/OFFをわかりやすく切り替えるためのViewとしてSwitchが追加されました。 h…

<uses-permission>設定の罠

<uses-permission> Androidアプリが特定の機能を利用する場合、AndroidManifest.xmlにその機能の一覧を<uses-permission>として記述します。 たとえば、マイクによる録音を行うアプリの場合、以下の様な記述が必要となります。 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.nein37.kanidaisuki" > </manifest></uses-permission></uses-permission>

AndroidのUtilsクラスまとめ

はじめに androidのUtilsをまとめた資料が見当たらなかったので作りました。 android.*パッケージに含まれるものだけまとめています。 TextUtils 文字列操作用Utils。 isEmpty()とかequals()とかよく使う。 文字列操作系も大体揃っていて便利。 isGraphic()…

Androidに最適化されたJavaクラス一覧

はじめに Androidではモバイル端末での処理に最適化されたいくつかの代替クラスが用意されています。 ほとんどがHashMap関係のメモリ消費を抑えるためのものですが、Android Developersにも代替クラスをまとめたページはないようなので、知っている範囲でま…

xmlns:toolsでAndroid Studioのレイアウトエディタを活用する

xmlns:tools? Androidのレイアウトファイルに以下のような記述が含まれていることがあります。

レイアウトの余白を埋める

余白を埋める 開発中、ViewとViewの間に余白を設けたい場合があります。 通常はmarginやdividerで調整しますが、間に余白のためのViewを置く場合もあると思います。 実はAndroidには、余白調整のためのSpaceというViewが存在しているのです。 Space SpaceはA…

Upボタンの実装メモ

はじめに Upボタンの実装サンプルとかあまり詳しく書いてないので自分が実装したときのメモをまとめた。 正確性にあまり自信がない。 Upボタン ActionBarの左端にはUpボタンと呼ばれる上位画面へ遷移するための機能がある。 ナビゲーションバーのBackボタン…

安全にファイルを操作する

AtomicFile API level 17からファイルを安全に操作するための仕組みとしてAtomicFileが導入された。 これは書き込み開始時に元ファイルをバックアップし、失敗時にはロールバックすることでファイルの破損を防ぐ仕組みだ。 SupportLibraryにもr11から追加さ…

マルチペインレイアウトを簡単に実装する方法

はじめに マルチペインレイアウトについての説明は省略する。 http://developer.android.com/design/patterns/multi-pane-layouts.html マルチペインレイアウトのうち、左側ペインがリスト・右側ペインが詳細になっているものをMaster/Detailパターンと呼ぶ…

スリープ時にもBroadcastを処理する方法

スリープとBroadcast 端末がスリープ状態の場合でもBroadcastReceiver.onReceive()の呼び出しは通常どおり行われる。 ただし、onReceive()からServiceを呼び出して処理させる場合、その処理が中断されてしまう可能性がある。 確実にバックグラウンド処理を行…

BroadcastReceiverの処理結果を受け取る方法

BroadcastReceiverの処理結果が取れる? ある日、BroadcastReceiver.setResult()があることに気がついた。 ずっとBroadcastの結果は取れないものだと思っていたが、Context.sendOrderedBroadcast()を使用することでその結果を受け取ることができるようだ。 …

PopupWindowで画面内にダイアログ風の表示をする方法

Dialogの実装は面倒 AndroidのDialog実装は割りと面倒くさい。 API level 13でshowDialogが非推奨となってからはDialogFragmentを使うのが一般的になったためだ。 DialogFragmentを使うとコールバックや非同期処理に気を使わなくてはいけないため、どうして…