diff options
author | Allan Wang <me@allanwang.ca> | 2018-02-02 21:05:26 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-02 21:05:26 -0500 |
commit | d68ea6d7eb8cadf687308fa3204386b79df0556b (patch) | |
tree | 0797c5c53e09b6af5eb996ab42e1f814ee615561 /app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt | |
parent | f36e0fff23abb5c892b40d1a9fb70776078976c4 (diff) | |
download | frost-d68ea6d7eb8cadf687308fa3204386b79df0556b.tar.gz frost-d68ea6d7eb8cadf687308fa3204386b79df0556b.tar.bz2 frost-d68ea6d7eb8cadf687308fa3204386b79df0556b.zip |
Feature/post (#696)v1.8.1
* Reorder final override
* Add initial fab bindings
* Update scripts
* Optimize and use js header hider
* Remove old header hider
* Use method for generating clicker
Diffstat (limited to 'app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt')
-rw-r--r-- | app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt | 50 |
1 files changed, 45 insertions, 5 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt index 743ac474..54fa0b8c 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt @@ -6,6 +6,7 @@ import android.app.AlarmManager import android.app.PendingIntent import android.content.Context import android.content.Intent +import android.content.res.ColorStateList import android.graphics.PointF import android.graphics.drawable.ColorDrawable import android.net.Uri @@ -40,6 +41,7 @@ import co.zsmb.materialdrawerkt.draweritems.profile.profileSetting import com.crashlytics.android.answers.ContentViewEvent import com.mikepenz.google_material_typeface_library.GoogleMaterial import com.mikepenz.iconics.IconicsDrawable +import com.mikepenz.iconics.typeface.IIcon import com.mikepenz.materialdrawer.AccountHeader import com.mikepenz.materialdrawer.Drawer import com.pitchedapps.frost.BuildConfig @@ -94,7 +96,7 @@ abstract class BaseMainActivity : BaseActivity(), MainActivityContract, private val searchViewCache = mutableMapOf<String, List<SearchItem>>() private var controlWebview: WebView? = null - override final fun onCreate(savedInstanceState: Bundle?) { + final override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val start = System.currentTimeMillis() setFrameContentView(Prefs.mainActivityLayout.layoutRes) @@ -104,13 +106,10 @@ abstract class BaseMainActivity : BaseActivity(), MainActivityContract, header(appBar) background(viewPager) } - L.i { "Main AAA ${System.currentTimeMillis() - start} ms" } setSupportActionBar(toolbar) adapter = SectionsPagerAdapter(loadFbTabs()) viewPager.adapter = adapter viewPager.offscreenPageLimit = TAB_COUNT - L.i { "Main BBB ${System.currentTimeMillis() - start} ms" } - L.i { "Main CCC ${System.currentTimeMillis() - start} ms" } tabs.setBackgroundColor(Prefs.mainActivityLayout.backgroundColor()) onNestedCreate(savedInstanceState) L.i { "Main finished loading UI in ${System.currentTimeMillis() - start} ms" } @@ -131,6 +130,7 @@ abstract class BaseMainActivity : BaseActivity(), MainActivityContract, } setupDrawer(savedInstanceState) L.i { "Main started in ${System.currentTimeMillis() - start} ms" } + initFab() } /** @@ -138,6 +138,45 @@ abstract class BaseMainActivity : BaseActivity(), MainActivityContract, */ protected abstract fun onNestedCreate(savedInstanceState: Bundle?) + private var hasFab = false + private var shouldShow = false + + private fun initFab() { + hasFab = false + shouldShow = false + fab.backgroundTintList = ColorStateList.valueOf(Prefs.headerColor.withMinAlpha(200)) + fab.hide() + appBar.addOnOffsetChangedListener { appBarLayout, verticalOffset -> + if (!hasFab) return@addOnOffsetChangedListener + val percent = Math.abs(verticalOffset.toFloat() / appBarLayout.totalScrollRange) + val shouldShow = percent < 0.2 + if (this.shouldShow != shouldShow) { + this.shouldShow = shouldShow + fab.showIf(shouldShow) + } + } + } + + override fun showFab(iicon: IIcon, clickEvent: () -> Unit) { + hasFab = true + fab.setOnClickListener { clickEvent() } + if (shouldShow) { + if (fab.isShown) { + fab.fadeScaleTransition { + setIcon(iicon, Prefs.iconColor) + } + return + } + } + fab.setIcon(iicon, Prefs.iconColor) + fab.showIf(shouldShow) + } + + override fun hideFab() { + hasFab = false + fab.setOnClickListener(null) + fab.hide() + } fun tabsForEachView(action: (position: Int, view: BadgedIcon) -> Unit) { (0 until tabs.tabCount).asSequence().forEach { i -> @@ -195,7 +234,8 @@ abstract class BaseMainActivity : BaseActivity(), MainActivityContract, } else { materialDialogThemed { title(R.string.kau_logout) - content(String.format(string(R.string.kau_logout_confirm_as_x), currentCookie.name ?: Prefs.userId.toString())) + content(String.format(string(R.string.kau_logout_confirm_as_x), currentCookie.name + ?: Prefs.userId.toString())) positiveText(R.string.kau_yes) negativeText(R.string.kau_no) onPositive { _, _ -> FbCookie.logout(this@BaseMainActivity) } |