コンテンツ作成 > アプリ > 便利そうなクラス

便利そうなクラス


コンテンツ


概要

  • Androidのアプリ開発で(地味に)便利そうなクラスの紹介

SparseArray系

リファレンス

概要

  • Arrayと名前が付いているが実際はキーが「int」のMap
    • MapだとラッパークラスのIntegerを使う必要があり効率の問題があった
  • 値の範囲が大きいintからStringやMapに変換する時に便利
  • SparseBooleanArrayとSparseIntArrayでは値もプリミティブの「boolean」や「int」が使える

MonthDisplayHelper

リファレンス

概要

  • カレンダーの作成に非常に便利なクラス(テキストカレンダー(ウィジェット)でも使用)
  • 指定した年と月(と週が始まる曜日)を渡すと内部でその月のカレンダー(表)を作成する
    • 行(row)が週/列(column)が曜日/値に日付を持つ表(要するに普通のカレンダー)に対して座標で日付を取得できる
    • 先月/来月の日も入るので必要に応じて今月に含まれる日付か判定することが可能
// 2013年3月のカレンダーを作成
MonthDisplayHelper helper = new MonthDisplayHelper(2013, 3);

// 内部的には以下のようなカレンダーが作成される
//  | 0   1   2   3   4   5   6
// -+---------------------------
// 0|31*  1   2   3   4   5   6
// 1| 7   8   9  10  11  12  13
// 2|14  15  16  17  18  19  20
// 3|21  22  23  24  25  26  27
// 4|28  29  30   1*  2*  3*  4*
// 5| 5*  6*  7*  8*  9* 10* 11*

helper.getDayAt()を呼び出すとその座標の日付を取得できる
  →例えばhelper.getDayAt(3, 1)は22を返す
helper.isWithinCurrentMonth()を呼び出すとその座標が今月かを調べることができる。
  →*が付いた位置だとfalseを返す
  →例えばhelper.isWithinCurrentMonth(3, 1)は今月中の日付なのでtrueを返す
  • 次の月/前の月の移動、月の日数の取得、週単位での日付の取得、指定した日が何週目か取得する機能もある

Pair

リファレンス

概要

  • 自由に使える java.util.Map.Entry のようなクラス
  • コレクションクラスと組み合わせるとさらに便利になる

Linkify

リファレンス