Skip to content

Instantly share code, notes, and snippets.

View fornewid's full-sized avatar
🤖
on android

Sungyong An fornewid

🤖
on android
View GitHub Profile
@fornewid
fornewid / ViewSpringAnimation.kt
Created July 7, 2019 14:09
View.spring() in #io19 motional intelligence session
fun animateVisibility(view: View, visible: Boolean) {
val targetAlpha = if (visible) 1f else 0f
if (view.alpha == targetAlpha) return
view.visibility = View.VISIBLE
val spring = view.spring(SpringAnimation.ALPHA)
(view.getTag(R.id.tag_pending_end_listener) as? DynamicAnimation.OnAnimationEndListener)?.let {
spring.removeEndListener(it)
}
class BlurViewModel : ViewModel() {
...
internal fun applyBlur(blurLevel: Int) {
val chargingConstraints = Constraints.Builder()
.setRequiresCharging(true)
.build()
val cleanupRequest = OneTimeWorkRequest
package soup.gdg.navigation.sample.navigation
import android.content.Context
import android.os.Bundle
import android.util.AttributeSet
import android.util.Log
import androidx.annotation.CallSuper
import androidx.annotation.IdRes
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.Fragment
@fornewid
fornewid / BaseFragment.kt
Last active March 17, 2019 15:27
Lazy ViewModel with Dagger2
// SpeakerFragment.kt
class SpeakerFragment : BaseFragment() {
private val speakerViewModel by viewModel<SpeakerViewModel>()
}
// BaseFragment.kt
abstract class BaseFragment : DaggerFragment() {
@Inject
@fornewid
fornewid / activity_single.xml
Created March 10, 2019 07:44
Navigation 훑어보기_4
<fragment
android:id="@+id/navHostFragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:navGraph="@navigation/{graph_name}" />
@fornewid
fornewid / ThirdActivityArgs.kt
Last active March 10, 2019 06:46
Navigation 훑어보기_2
// Generated by Navigation Architecture Components.
data class ThirdActivityArgs(val label: String?) : NavArgs {
@Suppress("CAST_NEVER_SUCCEEDS")
fun toBundle(): Bundle {
val result = Bundle()
if (Parcelable::class.java.isAssignableFrom(String::class.java)) {
result.putParcelable("label", this.label as Parcelable?)
} else if (Serializable::class.java.isAssignableFrom(String::class.java)) {
result.putSerializable("label", this.label as Serializable?)
} else {
@fornewid
fornewid / SecondFragmentDirections.kt
Created March 10, 2019 06:42
Navigation 훑어보기_1
// Generated by Navigation Architecture Components.
class SecondFragmentDirections private constructor() {
private data class ActionToThird(val label: String?) : NavDirections {
override fun getActionId(): Int = R.id.action_to_third
@Suppress("CAST_NEVER_SUCCEEDS")
override fun getArguments(): Bundle {
val result = Bundle()
if (Parcelable::class.java.isAssignableFrom(String::class.java)) {
result.putParcelable("label", this.label as Parcelable?)
@fornewid
fornewid / {graph_name}.xml
Last active March 10, 2019 06:10
res/navigation/{graph_name}.xml
<navigation app:startDestination="@+id/first">
<!-- Global Action -->
<action
android:id="@+id/action_to_second"
app:destination="@id/second" />
<!-- Destination -->
@fornewid
fornewid / BaseViewModel.kt
Created March 1, 2019 04:42
BaseViewModel.kt for RxJava
abstract class BaseViewModel : ViewModel() {
private val disposables = CompositeDisposable()
override fun onCleared() {
disposables.dispose()
super.onCleared()
}