Skip to content

Instantly share code, notes, and snippets.

View lamvann's full-sized avatar

Eli Ivann Ruiz lamvann

View GitHub Profile
@lamvann
lamvann / HideTop.kt
Created August 22, 2019 18:28
Makes activity go fullscreen
fun hideTop() {
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_FULLSCREEN
window.setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN)
supportActionBar?.hide()
}
@lamvann
lamvann / DisposableExt.kt
Created July 31, 2019 16:31
See also AutoDisposable.kt
infix fun Disposable.addTo(autoDisposable: AutoDisposable) = autoDisposable.add(this)
@lamvann
lamvann / AutoDisposable.kt
Last active July 31, 2019 16:30
See also DisposableExt.kt
class AutoDisposable @Inject constructor() : LifecycleObserver {
private lateinit var compositeDisposable: CompositeDisposable
fun bindTo(lifecycle: Lifecycle) {
lifecycle.addObserver(this)
compositeDisposable = CompositeDisposable()
}
fun add(disposable: Disposable) {
if (::compositeDisposable.isInitialized) {
fun <T> lazyUnsychronized(initializer: () -> T): Lazy<T> =
lazy(LazyThreadSafetyMode.NONE, initializer)
fun <T : View> AppCompatActivity.bindView(@IdRes idRes: Int): Lazy<T> =
lazyUnsychronized {
findViewById<T>(idRes)
}
class PopularMoviesActivity : BaseActivity(), PopularMoviesContract.View {
private val tvMainText: TextView by bindView(R.id.mainText)
private val btnMainButton: Button by bindView(R.id.mainButton)
@Inject lateinit var presenter: PopularMoviesPresenter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
class PopularMoviesActivity : BaseActivity(), PopularMoviesContract.View {
private val tvMainText: TextView by bindView(R.id.mainText)
private val btnMainButton: Button by bindView(R.id.mainButton)
lateinit var presenter: PopularMoviesPresenter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
abstract class BaseActivity: DaggerAppCompatActivity() {
@Inject lateinit var autoDisposable: AutoDisposable
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
autoDisposable.bindTo(this.lifecycle)
}
}
abstract class BaseActivity : AppCompatActivity() {
// This can be injected with Dagger2
var autoDisposable = AutoDisposable()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
autoDisposable.bindTo(this.lifecycle)
}
}
class PopularMoviesPresenter @Inject constructor(
private val model: PopularMoviesModel
) : PopularMoviesContract.Presenter {
private lateinit var view: PopularMoviesContract.View
override fun attach(view: PopularMoviesContract.View) {
this.view = view
}