日々是好日

プログラミングについてのあれこれ、ムダ知識など

StickyListHeaders風のライブラリを自作する-6

StickyListHeaders風のライブラリを自作する-5 - 日々是好日の続き。

Bintray で Android のライブラリを公開するまでやってみた。 Kotlin ライブラリなのでだいぶはまってしまいました……。

  • Bintray 側の準備
  • Gradle の設定
    • API Key の保存
    • プラグインの追加
    • ライブラリの追加
    • デプロイ用の gradle ファイルの生成
    • Bintray にデプロイ
    • Add to JCenter
    • ライブラリの使用
  • 所感
  • 参考サイト
  • リポジトリ
続きを読む

StickyListHeaders風のライブラリを自作する-3

StickyListHeaders風のライブラリを自作する-2 - 日々是好日の続き。

PinningListAdapter について考えてみる。

リポジトリ作りました。 github.com

続きを読む

StickyListHeaders風のライブラリを自作する-2

StickyListHeaders風のライブラリを自作する-1 - 日々是好日の続き。

ItemDecoration でがんばって Sticky な動作を実現してみました。

次は、ごく簡単な機能を提供する記事を書きたい。

前回こんなこと言ってましたが、結局実装までやっちゃいましたね。←

f:id:kcpoipoi:20190707233752g:plain:w200

続きを読む

StickyListHeaders風のライブラリを自作する-1

StickyListHeadersが数年前からメンテ停止しているので、RecyclerView を拡張してそれっぽい View のライブラリを作ってみようという闇の計画。

現時点で、計画が成就するのかマジでわからない。 そして誰得でもある。

github.com

Android ライブラリとは

developer.android.com

Android ライブラリは、構造上は Android アプリモジュールと同じです。

ソースコードファイルもあるし res もあるし、パッと見本当に一緒です。

個人的に、「そもそもモジュールってなんだ全然わからん」状態だったので、そこから調べてみた。 いかに基礎が分かっていないかバレてしまいますねヾ(:3ノシヾ)ノシ

モジュールとは

developer.android.com

モジュールとはソースファイルとビルド設定のコレクションであり、モジュールによって機能ごとにプロジェクトを分割できます。プロジェクトには 1 つまたは多数のモジュールを含めることができ、モジュールは別のモジュールを依存関係として使用できます。各モジュールは個別にビルド、テスト、デバッグを実行できます。

ある機能をどこからでも利用するために分割されたソースコードの塊、といった感じか。app もモジュールなんですよね。

モジュールを作って参照してみる

最初から「よっしゃオリジナルな RecyclerView 作ったるで!!」って意気込んだら速攻で挫折したので、おとなしく RecyclerView をラップしただけのモジュールを作って app モジュールから参照してみました。

モジュールの生成

  1. File → New → New Module... の順にクリック
  2. Android Library を選択して Next をクリック

ライブラリの名称とかの入力が出てくるので、次のとおりに入力。

item 入力値
Apprication/Library Name MyRecyclerView
Module Name myrecyclerview
Package Name work.kcs_labo.myrecyclerview

すると、左側の Project に myrecyclerview というモジュールが生成されると思います。こんな感じ。

f:id:kcpoipoi:20190623001631p:plain

なお、今後のライブラリ公開を考えるならば、入力値はこちらの Qiita を参考にしてください。

qiita.com

MyRecyclerView を作る

myrecyclerviewapp と同じくソースコードファイルを入れるパッケージがあるので、Kotlin ファイル作って次のコードを記述する。

package work.kcs_labo.myrecyclerview

import android.content.Context
import android.util.AttributeSet
import androidx.recyclerview.widget.RecyclerView

class MyRecyclerView: RecyclerView {
  constructor(context: Context): super(context)
  constructor(context: Context, attrs: AttributeSet): super(context, attrs)
  constructor(context: Context, attrs: AttributeSet, defStyle: Int): super(context, attrs, defStyle)
}

RecyclerView を継承した MyRecyclerView を作っただけ。 さっそくこれを app モジュールに依存関係指定して import してみる。

app から参照してみる

build.gradle に次のとおり依存関係を指定。

dependencies {
  implementation project(':myrecyclerview')
}

このへんの Gradle の記述はてくぶさんの記事を参照。

techbooster.org

んで、MainActivity なんかで次のとおり記述すると参照できていることがわかる。

import work.kcs_labo.myrecyclerview.MyRecyclerView

class MainActivity : AppCompatActivity() {

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val hoge = MyRecyclerView(this)
  }
}

まとめ

New Module... でモジュール作って Gradle で参照してみましょう!というだけの記事でした(ぇ

RecyclerView の実装はやったことあるけど、ライブラリとして機能を提供するのってどうやるんだ……?????

って小一時間以上悩んでもうつらみしかない。

次は、ごく簡単な機能を提供する記事を書きたい。

Sushi Buffet を支える技術 ver2.0.0

VS Code でいつでも回転寿司を眺められる拡張機能を作りました。 sushi-buffetを支える技術 - 日々是好日 のメジャーアップデートです。

マーケットプレイスはこちら。 marketplace.visualstudio.com

ぎとはぶ github.com

  • どうやって回転させているの?
    • 追加する構文
  • transform.rotate は使えないの?
  • workbench.html に div タグ仕込めばいいのでは?
  • 結局なんなのこの機能
続きを読む