load drawer avatar earlier to avoid flicker on app start (#1993)
* load drawer avatar earlier to avoid flicker on app start * use placeholder when loading drawer avatar for the first time
This commit is contained in:
parent
096baef33c
commit
227e219241
1 changed files with 35 additions and 20 deletions
|
@ -119,7 +119,9 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
if (accountManager.activeAccount == null) {
|
|
||||||
|
val activeAccount = accountManager.activeAccount
|
||||||
|
if (activeAccount == null) {
|
||||||
// will be redirected to LoginActivity by BaseActivity
|
// will be redirected to LoginActivity by BaseActivity
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -183,8 +185,7 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
|
||||||
val hideTopToolbar = preferences.getBoolean(PrefKeys.HIDE_TOP_TOOLBAR, false)
|
val hideTopToolbar = preferences.getBoolean(PrefKeys.HIDE_TOP_TOOLBAR, false)
|
||||||
mainToolbar.visible(!hideTopToolbar)
|
mainToolbar.visible(!hideTopToolbar)
|
||||||
|
|
||||||
val navIconSize = resources.getDimensionPixelSize(R.dimen.avatar_toolbar_nav_icon_size)
|
loadDrawerAvatar(activeAccount.profilePictureUrl, true)
|
||||||
mainToolbar.navigationIcon = FixedSizeDrawable(getDrawable(R.drawable.avatar_default), navIconSize, navIconSize)
|
|
||||||
|
|
||||||
mainToolbar.menu.add(R.string.action_search).apply {
|
mainToolbar.menu.add(R.string.action_search).apply {
|
||||||
setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM)
|
setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM)
|
||||||
|
@ -641,23 +642,7 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
|
||||||
.load(me.header)
|
.load(me.header)
|
||||||
.into(header.accountHeaderBackground)
|
.into(header.accountHeaderBackground)
|
||||||
|
|
||||||
val navIconSize = resources.getDimensionPixelSize(R.dimen.avatar_toolbar_nav_icon_size)
|
loadDrawerAvatar(me.avatar, false)
|
||||||
|
|
||||||
glide.asDrawable()
|
|
||||||
.override(navIconSize)
|
|
||||||
.load(me.avatar)
|
|
||||||
.transform(
|
|
||||||
RoundedCorners(resources.getDimensionPixelSize(R.dimen.avatar_radius_36dp))
|
|
||||||
)
|
|
||||||
.into(object : CustomTarget<Drawable>() {
|
|
||||||
override fun onResourceReady(resource: Drawable, transition: Transition<in Drawable>?) {
|
|
||||||
mainToolbar.navigationIcon = resource
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onLoadCleared(placeholder: Drawable?) {
|
|
||||||
mainToolbar.navigationIcon = placeholder
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
accountManager.updateActiveAccount(me)
|
accountManager.updateActiveAccount(me)
|
||||||
NotificationHelper.createNotificationChannelsForAccount(accountManager.activeAccount!!, this)
|
NotificationHelper.createNotificationChannelsForAccount(accountManager.activeAccount!!, this)
|
||||||
|
@ -682,6 +667,36 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
|
||||||
updateShortcut(this, accountManager.activeAccount!!)
|
updateShortcut(this, accountManager.activeAccount!!)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun loadDrawerAvatar(avatarUrl: String, showPlaceholder: Boolean) {
|
||||||
|
val navIconSize = resources.getDimensionPixelSize(R.dimen.avatar_toolbar_nav_icon_size)
|
||||||
|
|
||||||
|
glide.asDrawable()
|
||||||
|
.load(avatarUrl)
|
||||||
|
.transform(
|
||||||
|
RoundedCorners(resources.getDimensionPixelSize(R.dimen.avatar_radius_36dp))
|
||||||
|
)
|
||||||
|
.apply {
|
||||||
|
if (showPlaceholder) {
|
||||||
|
placeholder(R.drawable.avatar_default)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.into(object : CustomTarget<Drawable>(navIconSize, navIconSize) {
|
||||||
|
|
||||||
|
override fun onLoadStarted(placeholder: Drawable?) {
|
||||||
|
if(placeholder != null) {
|
||||||
|
mainToolbar.navigationIcon = FixedSizeDrawable(placeholder, navIconSize, navIconSize)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
override fun onResourceReady(resource: Drawable, transition: Transition<in Drawable>?) {
|
||||||
|
mainToolbar.navigationIcon = resource
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onLoadCleared(placeholder: Drawable?) {
|
||||||
|
mainToolbar.navigationIcon = placeholder
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
private fun fetchAnnouncements() {
|
private fun fetchAnnouncements() {
|
||||||
mastodonApi.listAnnouncements(false)
|
mastodonApi.listAnnouncements(false)
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
|
|
Loading…
Reference in a new issue