端末設定でNavigationBarを持っていなかった場合の挙動を考慮し、"android-inset-views" を0.2.0にアップデートしました。

StatusBarNavigationBar分のinset領域の高さを持つview郡、"android-inset-views"を0.2.0にアップデートしました。

github.com

INavigationBarView#setZeroHeightIfNavigationBarDisabled というメソッドでtrueにしておくと、端末設定を認識してViewの高さを0にすることが可能になりました。ハードウェアボタンを持つデバイスなんかで上手く使えるかと思います。エミュレーターやカスタムROMなんかでまれに存在する特殊なoverrideも考慮されています。

CoordinatorLayoutをネストさせる時用にNestedCoordinatorLayoutを作った

社内で前から使ってはいたのだけど、いくらかバグってたりしておかしな挙動もあったので。これを機にまるっと書き直しました。
「完璧な実装」みたいなものがなかなか見つからないので、とりあえずライブラリとしてMavenから取れるようにもしておきました。何か問題が見つかったらアップデートします。

github.com

使い方

README.mdに書いてあるとおり、プロジェクトをdependsに加えてください。


Add following lines to your buildscripts.

buildscript {
    ext {
        nested_scrolling_views_version = '0.0.1'
    }
}
repositories {
    maven {
        url 'http://dl.bintray.com/s64/maven'
    }
}

dependencies {
    compile("jp.s64.android.nestedscrollingviews:support-v25:${nested_scrolling_views_version}")
}

あとは通常のCoordinatorLayoutを使うのと同様です。
たとえばこんなかんじですね:

<jp.s64.android.nestedscrollingviews.support25.NestedCoordinatorLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    <android.support.design.widget.AppBarLayout
            android:id="@+id/navigable_appbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="top"/>
        ...
    </android.support.design.widget.AppBarLayout>
    ...
</jp.s64.android.nestedscrollingviews.support25.NestedCoordinatorLayout>

support-v26からNestedScrollまわりがガラッと変わるらしいとウワサで聞いたので、必要になったらそれも作ります。

ToolbarおよびActionBarをアニメーション対応させた "AnimatedToolbar" をOSSとして公開しました

AndroidのToolbarおよびActionBar部分をアニメーションに対応させたCustom view、"AnimatedToolbar" をOSSとして公開しました。

github.com

以下のコンポーネントが含まれます。

  • AnimatedToolbar
  • AnimatedToolbarActivity
  • AnimatedToolbarHelper
  • ActionBarWrapper

サンプル

こちらでサンプルアプリケーションをダウンロードできます。

play.google.com

挙動はこんなかんじ。

f:id:S64:20170730010427g:plain:w250

左右のNavigation Bar分の幅を持つViewを追加し、android-inset-views 0.1.0 を公開しました。

Androidにおける Status Bar, Navigation Bar 部分にあたる領域分の高さを持つCustom view郡、"android-inset-views" を 0.1.0 にアップデートしました。

github.com

旧バージョン 0.0.1 の記事はこちら。

従来の以下のコンポーネント:

  • StatusBarInsetFrameLayout
  • BottomNavigationBarInsetFrameLayout

の2つから、今回は以下のコンポーネントを加えました:

  • LeftNavigationBarInsetFrameLayout
  • RightNavigationBarInsetFrameLayout
  • HorizontalPositionNavigationBarInsetFrameLayout
  • DisplayCompat
  • NavigationBarUtils

主にHandsetサイズの端末において左右に配置されるNavigationBarをカバーする用途を想定しています。

AndroidのStatusBar, NavigationBarの高さを持つView群 "android-inset-views" をOSSとして公開しました

Androidにおける StatusBar, NavigationBar 部分にあたる領域分の高さを持つCustom view郡を “android-inset-views” をOSSとして公開しました。
仕事で必要になったモノを汎用的に焼き直したものです。

github.com

以下のコンポーネントが含まれます:

  • StatusBarInsetFrameLayout
  • BottomNavigationBarInsetFrameLayout

想定する用途

android:fitsSystemWindows="true" を指定したり、android:windowTranslucentStatusandroid:windowTranslucentNavigationandroid:statusBarColorandroid:navigationBarColorなどを指定し、StatusBar, NavigationBar 領域 (いわゆるinsets) までコンテンツを広げている際、状況によって領域分のpaddingを持ったり、特別カラーを変えたいなどのシーンがよく発生します。

多くの場合は自前でlistenし計算したものを直接setLayoutParamsするなどしていることが多いかと思いますが、これを利用することでより簡単に実現できるようになります。

License

Apache License 2.0 です。

今後の予定

  • CoordinatorLayoutに対応したい
  • 趣味ではXamarinをよくやるので、Bindingを作りたい

BookStackというOSSを日本語化しました

BookStackというセルフホスティング用Wikiソフトウェアに日本語翻訳を提供し、この度Beta v0.17.0としてリリースされました。

Contributeの背景としましては、仕事で「オンプレミスで利用できる社内情報共有ツールが欲しい」という発注があったためです。
たとえばCrowiなどを候補に入れていたのですが、非エンジニア系の事務所であったために少し要件とズレてしまい、学習コストが低く直感的に利用できるものを探した結果、BookStackがみごとマッチしたという形になります。

BookStackは、

  • WYSIWYGが利用できる
  • ゲストへの公開を含めた、ユーザごとの詳細な権限管理ができる
  • 編集や権限変更等の履歴が記録される

などの特徴を持ち、MITライセンスで提供されているWikiソフトウェアです。

ポリシーベースのキャッシュ管理ライブラリ "Repoli" をOSSとして公開しました

データを永続性メモリ / 揮発性メモリに記録したり、ポリシーベースでよしなに取得し直したり消したりできるライブラリ “Repoli” を作ったので、取り急ぎ公開しました。
仕事用に作ったモノを汎用的に焼き直したものです。

github.com

主な用途としてはAPIリクエストのキャッシュを想定しています。
JavaやAndroidのプロジェクトで利用できます。

対応プラットフォーム

  • coreのみで一般的なJavaプロジェクトで利用できます。
  • rxjava1はRxJava1.x用にバインドしたものです。
  • realmはAndroid用にRealmとの繋ぎ込みをしたIStorageの実装を同梱しています。

使い方

こちらのテストコード が実際の利用に近いので、こんな感じで書けば使えます。
早めに設計のUMLを公開用に焼き直すので、しばしお待ちを。

ライセンス

Apache License 2.0です。