Make status bar transparent on API > 21 properly. Snack function moved to an extension method in View

This commit is contained in:
len 2016-04-10 00:59:12 +02:00
parent 8c9db2db61
commit 11f6c44442
5 changed files with 37 additions and 44 deletions

View file

@ -42,25 +42,15 @@ open class BaseActivity : AppCompatActivity() {
supportActionBar?.subtitle = getString(titleResource) supportActionBar?.subtitle = getString(titleResource)
} }
fun snack(text: String?, duration: Int = Snackbar.LENGTH_LONG) {
val snack = Snackbar.make(findViewById(android.R.id.content)!!, text ?: getString(R.string.unknown_error), duration)
val textView = snack.view.findViewById(android.support.design.R.id.snackbar_text) as TextView
textView.setTextColor(Color.WHITE)
snack.show()
}
fun snack(text: String?, actionRes: Int, actionFunc: () -> Unit,
duration: Int = Snackbar.LENGTH_LONG, view: View = findViewById(android.R.id.content)!!) {
val snack = Snackbar.make(view, text ?: getString(R.string.unknown_error), duration)
.setAction(actionRes, { actionFunc() })
val textView = snack.view.findViewById(android.support.design.R.id.snackbar_text) as TextView
textView.setTextColor(Color.WHITE)
snack.show()
}
protected val app: App protected val app: App
get() = App.get(this) get() = App.get(this)
inline fun View.snack(message: String, length: Int = Snackbar.LENGTH_LONG, f: Snackbar.() -> Unit) {
val snack = Snackbar.make(this, message, length)
val textView = snack.view.findViewById(android.support.design.R.id.snackbar_text) as TextView
textView.setTextColor(Color.WHITE)
snack.f()
snack.show()
}
} }

View file

@ -20,6 +20,7 @@ import eu.kanade.tachiyomi.ui.base.fragment.BaseRxFragment
import eu.kanade.tachiyomi.ui.main.MainActivity import eu.kanade.tachiyomi.ui.main.MainActivity
import eu.kanade.tachiyomi.ui.manga.MangaActivity import eu.kanade.tachiyomi.ui.manga.MangaActivity
import eu.kanade.tachiyomi.util.getResourceDrawable import eu.kanade.tachiyomi.util.getResourceDrawable
import eu.kanade.tachiyomi.util.snack
import eu.kanade.tachiyomi.util.toast import eu.kanade.tachiyomi.util.toast
import eu.kanade.tachiyomi.widget.EndlessGridScrollListener import eu.kanade.tachiyomi.widget.EndlessGridScrollListener
import eu.kanade.tachiyomi.widget.EndlessListScrollListener import eu.kanade.tachiyomi.widget.EndlessListScrollListener
@ -355,10 +356,12 @@ class CatalogueFragment : BaseRxFragment<CataloguePresenter>(), FlexibleViewHold
hideProgressBar() hideProgressBar()
Timber.e(error, error.message) Timber.e(error, error.message)
baseActivity.snack(error.message, R.string.action_retry, { catalogue_view.snack(error.message ?: "") {
showProgressBar() setAction(R.string.action_retry) {
presenter.retryRequest() showProgressBar()
}) presenter.retryRequest()
}
}
} }
/** /**

View file

@ -5,9 +5,7 @@ import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.support.v4.app.Fragment import android.support.v4.app.Fragment
import android.support.v4.view.GravityCompat import android.support.v4.view.GravityCompat
import android.support.v4.widget.DrawerLayout
import android.view.MenuItem import android.view.MenuItem
import android.view.View
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.ui.backup.BackupFragment import eu.kanade.tachiyomi.ui.backup.BackupFragment
import eu.kanade.tachiyomi.ui.base.activity.BaseActivity import eu.kanade.tachiyomi.ui.base.activity.BaseActivity
@ -40,19 +38,9 @@ class MainActivity : BaseActivity() {
setupToolbar(toolbar, backNavigation = false) setupToolbar(toolbar, backNavigation = false)
supportActionBar?.setHomeAsUpIndicator(R.drawable.ic_menu_white_24dp) supportActionBar?.setHomeAsUpIndicator(R.drawable.ic_menu_white_24dp)
drawer.addDrawerListener(object : DrawerLayout.SimpleDrawerListener() { if (Build.VERSION.SDK_INT >= 21) {
override fun onDrawerSlide(drawerView: View, slideOffset: Float) { window.statusBarColor = android.R.color.transparent;
if (Build.VERSION.SDK_INT >= 21) { }
window.statusBarColor = theme.getResourceColor(R.attr.status_bar_trans)
}
}
override fun onDrawerClosed(drawerView: View) {
if (Build.VERSION.SDK_INT >= 21) {
window.statusBarColor = theme.getResourceColor(R.attr.colorPrimaryDark)
}
}
})
// Set behavior of Navigation drawer // Set behavior of Navigation drawer
nav_view.setNavigationItemSelectedListener { item -> nav_view.setNavigationItemSelectedListener { item ->

View file

@ -1,7 +1,10 @@
package eu.kanade.tachiyomi.util package eu.kanade.tachiyomi.util
import android.graphics.Color
import android.graphics.Point import android.graphics.Point
import android.support.design.widget.Snackbar
import android.view.View import android.view.View
import android.widget.TextView
/** /**
* Returns coordinates of view. * Returns coordinates of view.
@ -9,11 +12,19 @@ import android.view.View
* *
* @return coordinates of view * @return coordinates of view
*/ */
fun View.getCoordinates(): Point fun View.getCoordinates() = Point((left + right) / 2, (top + bottom) / 2)
{
var cx = (this.left + this.right) / 2;
var cy = (this.top + this.bottom) / 2;
return Point(cx, cy)
}
/**
* Shows a snackbar in this view.
*
* @param message the message to show.
* @param length the duration of the snack.
* @param f a function to execute in the snack, allowing for example to define a custom action.
*/
inline fun View.snack(message: String, length: Int = Snackbar.LENGTH_LONG, f: Snackbar.() -> Unit) {
val snack = Snackbar.make(this, message, length)
val textView = snack.view.findViewById(android.support.design.R.id.snackbar_text) as TextView
textView.setTextColor(Color.WHITE)
snack.f()
snack.show()
}

View file

@ -5,6 +5,7 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:fitsSystemWindows="true" android:fitsSystemWindows="true"
android:orientation="vertical" android:orientation="vertical"
android:id="@+id/catalogue_view"
tools:context="eu.kanade.tachiyomi.ui.catalogue.CatalogueFragment"> tools:context="eu.kanade.tachiyomi.ui.catalogue.CatalogueFragment">
<ProgressBar <ProgressBar