Skip to content

Instantly share code, notes, and snippets.

View dmersiyanov's full-sized avatar

Dmitry Mersiyanov dmersiyanov

  • Moscow
View GitHub Profile
@dmersiyanov
dmersiyanov / SaveBitmapToStorage.kt
Created May 31, 2022 07:58
Save bitmap to external storage android
import android.content.ContentValues
import android.graphics.Bitmap
import android.os.Build
import android.provider.MediaStore
import androidx.fragment.app.Fragment
import timber.log.Timber
import java.io.IOException
/**
@dmersiyanov
dmersiyanov / FragmentArgumentDelegate.kt
Last active June 9, 2022 06:22
Delegate for fragment arguments
import android.os.Bundle
import android.os.Parcelable
import java.io.Serializable
import androidx.fragment.app.Fragment
import kotlin.properties.ReadWriteProperty
import kotlin.reflect.KProperty
class FragmentArgumentDelegate<T : Any> :
ReadWriteProperty<Fragment, T> {
@dmersiyanov
dmersiyanov / BundleExtensions.kt
Created June 9, 2022 06:20
Kotlin android bundle extensions
import android.content.Intent
import android.os.Bundle
import android.os.Parcelable
import timber.log.Timber
import java.io.Serializable
inline fun <reified T : Parcelable> Bundle.putWithClassNameKey(parcelable: T?) {
parcelable?.let { putParcelable(T::class.java.simpleName, parcelable) }
}
@dmersiyanov
dmersiyanov / SavedState.kt
Created July 12, 2022 10:47
Save state for android custom view
internal class SavedState : BaseSavedState {
var isExpanded: Boolean = false
constructor(superState: Parcelable) : super(superState)
constructor(source: Parcel) : super(source) {
isExpanded = source.readBoolean()
}
constructor(source: Parcel?, loader: ClassLoader?) : super(source, loader)
@dmersiyanov
dmersiyanov / Fragment.kt
Last active March 22, 2023 12:43
Handle dynamic ViewPager2 page height
class Fragment() {
private fun initViews() = with(binding) {
pager.setPageTransformer { page, pos ->
if (pos == 0.0F) {
updatePagerHeightForChild(page, pager)
}
}
}