Skip to content

Instantly share code, notes, and snippets.

View kubode's full-sized avatar
🤔

Masatoshi Kubode kubode

🤔
View GitHub Profile
import com.android.build.api.dsl.CommonExtension
import java.io.File
import javax.xml.parsers.DocumentBuilderFactory
import javax.xml.transform.TransformerFactory
import javax.xml.transform.dom.DOMSource
import javax.xml.transform.stream.StreamResult
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.configurationcache.extensions.capitalized
import org.gradle.kotlin.dsl.getByName
@kubode
kubode / RepositoryHandler.github.kt
Created May 27, 2021 04:09
Kotlin DSL extension
import java.net.URI
import org.gradle.api.Project
import org.gradle.api.artifacts.dsl.RepositoryHandler
import org.gradle.api.artifacts.repositories.MavenArtifactRepository
import org.gradle.kotlin.dsl.provideDelegate
val RepositoryHandler.github: Project.(repo: String) -> MavenArtifactRepository get() = { repo ->
maven {
url = URI("https://maven.pkg.github.com/$repo")
credentials {
@kubode
kubode / ArchitectureComponents.kt
Created December 24, 2017 08:49
Lifecycleを使ってAutoDisposableを実現する ref: https://qiita.com/kubode/items/9d7f212219652e8439a9
val LifecycleOwner.disposeOn: Disposable.(Lifecycle.Event) -> Unit
get() = { disposeEvent -> disposeOn(lifecycle, disposeEvent) }
val LifecycleOwner.autoDispose: Disposable.() -> Unit
get() = { autoDispose(lifecycle) }
@kubode
kubode / MaskableTextView.kt
Created November 21, 2017 12:04
MaskableTextView
import android.content.Context
import android.graphics.Canvas
import android.graphics.Paint
import android.graphics.PorterDuff
import android.graphics.PorterDuffXfermode
import android.graphics.drawable.Drawable
import android.support.v7.widget.AppCompatTextView
import android.util.AttributeSet
@kubode
kubode / NestedScrollCoordinatorLayout.kt
Created November 15, 2017 02:30
Nested scroll CoordinatorLayout
import android.content.Context
import android.support.design.widget.CoordinatorLayout
import android.support.v4.view.NestedScrollingChild2
import android.support.v4.view.NestedScrollingChildHelper
import android.util.AttributeSet
import android.view.View
class NestedScrollCoordinatorLayout @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null
@kubode
kubode / FooTest.kt
Created November 8, 2017 01:56
Architecture Component immutable model cache pattern
import android.arch.core.executor.testing.InstantTaskExecutorRule
import android.arch.lifecycle.LiveData
import android.arch.lifecycle.MediatorLiveData
import android.arch.lifecycle.MutableLiveData
import io.reactivex.subjects.SingleSubject
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import kotlin.test.assertEquals
@kubode
kubode / build.gradle
Created October 28, 2017 11:20
InstrumentationTestでRxIdlerを使おうとしたがダメだった ref: http://qiita.com/kubode/items/7cfc0767dcc560498725
android {
buildTypes {
release {
multiDexKeepProguard 'multidex-config.pro'
...
}
}
}
@kubode
kubode / file0.txt
Last active December 1, 2017 11:42
AndroidOのfindViewByIdの仕様変更 ref: https://qiita.com/kubode/items/c7fe9c091fdf5533d36b
// こっちだとTextView!!になるので
val text26_1 = findViewById<TextView>(android.R.id.text2)
// 型を明示するほうが良さそう
val text26_2: TextView = findViewById(android.R.id.text2)
@kubode
kubode / Diff.kt
Created July 20, 2017 12:45
DiffUtilを使ってRecyclerView.Adapterをいい感じにする ref: http://qiita.com/kubode/items/92c1190a6421ba055cc0
interface Diffable {
// otherと同じIDを持つかどうか
fun isTheSame(other: Diffable): Boolean = equals(other)
// otherと完全一致するかどうか
fun isContentsTheSame(other: Diffable): Boolean = equals(other)
}
private class Callback(
val old: List<Diffable>,
val new: List<Diffable>