Skip to content

Instantly share code, notes, and snippets.

View satoshun's full-sized avatar
🤖

Sato Shun satoshun

🤖
View GitHub Profile
@satoshun
satoshun / jetpack_compose_keyboard.md
Last active December 18, 2022 13:26
Jetpack Compose キーボード少しめも

LocalSoftwareKeyboardController, FocusRequester の2クラスを使う

キーボードのshow/hide

LocalSoftwareKeyboardControllerを取得して、show/hideメソッドをコールする

@Composable
fun sample() {
 val keyboardController = LocalSoftwareKeyboardController.current
@satoshun
satoshun / main.md
Last active June 2, 2021 01:20
関数を見つけるショートカットキー的なあれこれ

Jetpack Compose時代になったら、関数にジャンプしたくなるケースが増えると思うので、良いショートカットについてのあれこれです。 ショートカットキーについて、全く詳しくないので他にいい方法があったら教えて頂けると喜びます🐾

Go to File

File名とComposable関数の名前が一致していたら、これでいけます。 なので、プロジェクトで、ファイルの一番上に定義するComposable関数は、ファイル名と一致させる規約にすれば良さそう。

Go to Symbol

@satoshun
satoshun / gist:beaaa0ae42405188f0f041f54cb0c011
Last active May 30, 2021 04:59
addRepeatingJobについて
import androidx.recyclerview.widget.DiffUtil
import com.xwray.groupie.GroupieViewHolder
import com.xwray.groupie.Item
abstract class DiffCallbackItem<T, VH : GroupieViewHolder>(
private val data: T,
private val callback: DiffUtil.ItemCallback<T>
) : Item<VH>() {
override fun isSameAs(other: Item<*>): Boolean {
if (viewType != other.viewType) {
@Composable
fun <T> observe(
data: Flow<T>,
transform: (T) -> T = { it }
): T? {
var result: T? by state { null }
val action: suspend (T) -> Unit = remember { { result = transform(it) } }
onCommit(data) {
val job = GlobalScope.launch(Dispatchers.Main) {
import android.content.Context
import android.util.AttributeSet
import androidx.constraintlayout.widget.ConstraintHelper
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.view.isGone
import androidx.core.view.marginLeft
import androidx.core.view.marginRight
import androidx.core.view.updateLayoutParams
class GoneOverflow @JvmOverloads constructor(
class MainFragment : Fragment(R.layout.main_frag2) {
private val binding: MainFrag2Binding by viewBinding()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
// ...
}
}
class MainFragment : Fragment(R.layout.main_frag) {
// private lateinit var binding: MainFragBinding <-- memory leak?
private val binding: MainFragBinding get() = MainFragBinding.bind(view!!)
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
// ...
}
}
class ChildFragment : Fragment() {
private lateinit var binding: ChildFragBinding
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = ChildFragBinding.inflate(inflater, container, false)
return binding.root
public final class AppModule_ProvideFugaFactory implements Factory<Fuga> {
@Override
public Fuga get() {
return provideFuga();
}
public static AppModule_ProvideFugaFactory create() {
return InstanceHolder.INSTANCE;
}