ReachabilityをAndroidで実現するライブラリを作った
Reachabilityとは?
Reachability on Android
作りました。Reachability
Activityに、以下のように追加することでReachabilityが実現可能になります。
Reachability reachability = new Reachability(this); reachability.makeHoverView(Reachability.Position.RIGHT);
忘れずにbuild.gradle
にも追加してください。
compile 'com.github.sakebook:Reachability:0.0.1@aar'
詳しい使い方はREADMEに書いてある通りなのですが、いくつか説明をします。
HoverView
丸い、画面下部に浮かんでいるようなボタンです。
Google+に似たようなボタンがあったので、それを参考にして作っています。
ピクトグラムは試行錯誤した結果、画面をはみ出すようなデザインにしました。
外側の矢印で動きがあることを示し、中にあるドットが到達点で動きを表現しています。色合いはMaterialDesignのカラーパレットを参考にしました。
ステータスバーの表示
ステータスバーも届かないので、こちらも呼び出せるようにしました。
android-17(Android 4.2, 4.2.2)から、expand
メソッドでは開けないようになりました。開く場合は、expandSettingsPanel
とexpandNotificationsPanel
を用途に応じて呼び出し分けなければなりません。
Reachability
では、expandNotificationsPanel
のみサポートしています。
RootViewに対してTouchListenerを実装すると、すべての箇所で反応してしまいます。
RootViewの一つ上に乗っかっているContentViewのTouchListenerの返り値をtrue
にすることで、ContentViewがある部分ではRootViewが反応しないように制御しています。
カスタムアニメーションについて
シンプルなアニメーションなら対応していますが、複数時間差で動かすアニメーションや、HoverViewを画面の好きな場所に配置することなどはまだサポートできていません。 カスタムアニメーションの部分は課題が多いです。
今後
テーマによる配色変更や、アニメーションの詳細設定、HoverViewの拡張などを考えています。 PullRequestやご意見お待ちしております。
参考
大きくなったiPhoneの新機能、片手モード「Reachability」の動画 / GIZMODO
Material Design Preview : Color
[Android アプリの UI デザイン] Layer List の作りかたのまとめと Tips / クラスメソッドブログ
Activityのビュー階層とコンテンツルート(View)を取得する / Kazzzの日記
Android のタッチイベントを理解する(その1) / Unmotivated やる気はない
AndroidでもiPhoneに負けないようなアニメーションを実装してみよう / YAHOO!JAPAN デベロッパーネットワーク