Added scroll animation
This commit is contained in:
parent
79bdd49547
commit
1932ba219e
35 changed files with 247 additions and 97 deletions
|
@ -13,15 +13,21 @@ import code.name.monkey.retromusic.util.DensityUtil
|
|||
import code.name.monkey.retromusic.util.ViewUtil
|
||||
import com.google.android.material.appbar.AppBarLayout
|
||||
import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView
|
||||
import kotlinx.android.synthetic.main.fragment_main_activity_recycler_view.*
|
||||
import kotlinx.android.synthetic.main.fragment_main_activity_recycler_view.container
|
||||
import kotlinx.android.synthetic.main.fragment_main_activity_recycler_view.empty
|
||||
import kotlinx.android.synthetic.main.fragment_main_activity_recycler_view.emptyEmoji
|
||||
import kotlinx.android.synthetic.main.fragment_main_activity_recycler_view.emptyText
|
||||
import kotlinx.android.synthetic.main.fragment_main_activity_recycler_view.recyclerView
|
||||
import me.everything.android.ui.overscroll.OverScrollDecoratorHelper
|
||||
|
||||
abstract class AbsLibraryPagerRecyclerViewFragment<A : RecyclerView.Adapter<*>, LM : RecyclerView.LayoutManager> : AbsLibraryPagerFragment(), AppBarLayout.OnOffsetChangedListener {
|
||||
abstract class AbsLibraryPagerRecyclerViewFragment<A : RecyclerView.Adapter<*>, LM : RecyclerView.LayoutManager> :
|
||||
AbsLibraryPagerFragment(), AppBarLayout.OnOffsetChangedListener {
|
||||
|
||||
protected var adapter: A? = null
|
||||
protected var layoutManager: LM? = null
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
|
||||
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
|
||||
): View? {
|
||||
return inflater.inflate(R.layout.fragment_main_activity_recycler_view, container, false)
|
||||
}
|
||||
|
@ -40,6 +46,8 @@ abstract class AbsLibraryPagerRecyclerViewFragment<A : RecyclerView.Adapter<*>,
|
|||
}
|
||||
recyclerView.layoutManager = layoutManager
|
||||
recyclerView.adapter = adapter
|
||||
|
||||
OverScrollDecoratorHelper.setUpOverScroll(recyclerView, OverScrollDecoratorHelper.ORIENTATION_VERTICAL)
|
||||
}
|
||||
|
||||
private fun initAdapter() {
|
||||
|
@ -89,10 +97,11 @@ abstract class AbsLibraryPagerRecyclerViewFragment<A : RecyclerView.Adapter<*>,
|
|||
|
||||
override fun onOffsetChanged(p0: AppBarLayout?, i: Int) {
|
||||
container.setPadding(
|
||||
container.paddingLeft,
|
||||
container.paddingTop,
|
||||
container.paddingRight,
|
||||
libraryFragment.totalAppBarScrollingRange + i)
|
||||
container.paddingLeft,
|
||||
container.paddingTop,
|
||||
container.paddingRight,
|
||||
libraryFragment.totalAppBarScrollingRange + i
|
||||
)
|
||||
}
|
||||
|
||||
override fun onQueueChanged() {
|
||||
|
|
|
@ -4,12 +4,16 @@ import android.app.ActivityOptions
|
|||
import android.content.res.ColorStateList
|
||||
import android.os.Bundle
|
||||
import android.util.DisplayMetrics
|
||||
import android.view.*
|
||||
import android.view.LayoutInflater
|
||||
import android.view.Menu
|
||||
import android.view.MenuInflater
|
||||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import code.name.monkey.appthemehelper.common.ATHToolbarActivity
|
||||
import code.name.monkey.appthemehelper.util.ATHUtil
|
||||
import code.name.monkey.appthemehelper.util.ColorUtil
|
||||
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper
|
||||
import code.name.monkey.retromusic.App
|
||||
import code.name.monkey.retromusic.Constants
|
||||
|
@ -30,14 +34,24 @@ import code.name.monkey.retromusic.mvp.presenter.HomePresenter
|
|||
import code.name.monkey.retromusic.mvp.presenter.HomeView
|
||||
import code.name.monkey.retromusic.util.NavigationUtil
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||
import code.name.monkey.retromusic.util.RetroColorUtil
|
||||
import com.bumptech.glide.Glide
|
||||
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
||||
import kotlinx.android.synthetic.main.abs_playlists.*
|
||||
import kotlinx.android.synthetic.main.fragment_banner_home.*
|
||||
import kotlinx.android.synthetic.main.home_content.*
|
||||
import kotlinx.android.synthetic.main.abs_playlists.actionShuffle
|
||||
import kotlinx.android.synthetic.main.abs_playlists.history
|
||||
import kotlinx.android.synthetic.main.abs_playlists.lastAdded
|
||||
import kotlinx.android.synthetic.main.abs_playlists.topPlayed
|
||||
import kotlinx.android.synthetic.main.fragment_banner_home.bannerImage
|
||||
import kotlinx.android.synthetic.main.fragment_banner_home.titleWelcome
|
||||
import kotlinx.android.synthetic.main.fragment_banner_home.toolbarContainer
|
||||
import kotlinx.android.synthetic.main.fragment_banner_home.userImage
|
||||
import kotlinx.android.synthetic.main.fragment_home.container
|
||||
import kotlinx.android.synthetic.main.home_content.emptyContainer
|
||||
import kotlinx.android.synthetic.main.home_content.recyclerView
|
||||
import me.everything.android.ui.overscroll.OverScrollDecoratorHelper
|
||||
import java.io.File
|
||||
import java.util.*
|
||||
import java.util.ArrayList
|
||||
import java.util.Calendar
|
||||
import java.util.Random
|
||||
import javax.inject.Inject
|
||||
|
||||
class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallbacks, HomeView {
|
||||
|
@ -53,18 +67,22 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba
|
|||
}
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, viewGroup: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||
return inflater.inflate(if (PreferenceUtil.getInstance(requireContext()).isHomeBanner) R.layout.fragment_banner_home else R.layout.fragment_home, viewGroup, false)
|
||||
return inflater.inflate(
|
||||
if (PreferenceUtil.getInstance(requireContext()).isHomeBanner) R.layout.fragment_banner_home else R.layout.fragment_home,
|
||||
viewGroup,
|
||||
false
|
||||
)
|
||||
}
|
||||
|
||||
private fun loadImageFromStorage() {
|
||||
Glide.with(requireContext())
|
||||
.load(File(PreferenceUtil.getInstance(requireContext()).profileImage, Constants.USER_PROFILE))
|
||||
.asBitmap()
|
||||
.diskCacheStrategy(DiskCacheStrategy.NONE)
|
||||
.skipMemoryCache(true)
|
||||
.placeholder(R.drawable.ic_person_flat)
|
||||
.error(R.drawable.ic_person_flat)
|
||||
.into(userImage)
|
||||
.load(File(PreferenceUtil.getInstance(requireContext()).profileImage, Constants.USER_PROFILE))
|
||||
.asBitmap()
|
||||
.diskCacheStrategy(DiskCacheStrategy.NONE)
|
||||
.skipMemoryCache(true)
|
||||
.placeholder(R.drawable.ic_person_flat)
|
||||
.error(R.drawable.ic_person_flat)
|
||||
.into(userImage)
|
||||
}
|
||||
|
||||
private val displayMetrics: DisplayMetrics
|
||||
|
@ -81,7 +99,11 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba
|
|||
toolbar = view.findViewById(R.id.toolbar)
|
||||
|
||||
bannerImage?.setOnClickListener {
|
||||
val options = ActivityOptions.makeSceneTransitionAnimation(mainActivity, userImage, getString(R.string.transition_user_image))
|
||||
val options = ActivityOptions.makeSceneTransitionAnimation(
|
||||
mainActivity,
|
||||
userImage,
|
||||
getString(R.string.transition_user_image)
|
||||
)
|
||||
NavigationUtil.goToUserInfo(requireActivity(), options)
|
||||
}
|
||||
|
||||
|
@ -104,7 +126,11 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba
|
|||
setupToolbar()
|
||||
|
||||
userImage?.setOnClickListener {
|
||||
val options = ActivityOptions.makeSceneTransitionAnimation(mainActivity, userImage, getString(R.string.transition_user_image))
|
||||
val options = ActivityOptions.makeSceneTransitionAnimation(
|
||||
mainActivity,
|
||||
userImage,
|
||||
getString(R.string.transition_user_image)
|
||||
)
|
||||
NavigationUtil.goToUserInfo(requireActivity(), options)
|
||||
}
|
||||
titleWelcome?.text = String.format("%s", PreferenceUtil.getInstance(requireContext()).userName)
|
||||
|
@ -118,14 +144,8 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba
|
|||
}
|
||||
homePresenter.attachView(this)
|
||||
homePresenter.loadSections()
|
||||
}
|
||||
|
||||
private fun toolbarColor(): Int {
|
||||
return if (PreferenceUtil.getInstance(requireContext()).isHomeBanner) {
|
||||
ColorUtil.withAlpha(RetroColorUtil.toolbarColor(mainActivity), 0.85f)
|
||||
} else {
|
||||
RetroColorUtil.toolbarColor(mainActivity)
|
||||
}
|
||||
OverScrollDecoratorHelper.setUpOverScroll(container)
|
||||
}
|
||||
|
||||
private fun setupToolbar() {
|
||||
|
@ -133,7 +153,11 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba
|
|||
backgroundTintList = ColorStateList.valueOf(ATHUtil.resolveColor(requireContext(), R.attr.colorSurface))
|
||||
setNavigationIcon(R.drawable.ic_menu_white_24dp)
|
||||
setOnClickListener {
|
||||
val options = ActivityOptions.makeSceneTransitionAnimation(mainActivity, toolbarContainer, getString(R.string.transition_toolbar))
|
||||
val options = ActivityOptions.makeSceneTransitionAnimation(
|
||||
mainActivity,
|
||||
toolbarContainer,
|
||||
getString(R.string.transition_toolbar)
|
||||
)
|
||||
NavigationUtil.goToSearch(requireActivity(), options)
|
||||
}
|
||||
|
||||
|
@ -164,7 +188,12 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba
|
|||
super.onCreateOptionsMenu(menu, inflater)
|
||||
inflater.inflate(R.menu.menu_search, menu)
|
||||
|
||||
ToolbarContentTintHelper.handleOnCreateOptionsMenu(requireActivity(), toolbar, menu, ATHToolbarActivity.getToolbarBackgroundColor(toolbar))
|
||||
ToolbarContentTintHelper.handleOnCreateOptionsMenu(
|
||||
requireActivity(),
|
||||
toolbar,
|
||||
menu,
|
||||
ATHToolbarActivity.getToolbarBackgroundColor(toolbar)
|
||||
)
|
||||
}
|
||||
|
||||
override fun onPrepareOptionsMenu(menu: Menu) {
|
||||
|
@ -174,7 +203,11 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba
|
|||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
if (item.itemId == R.id.action_search) {
|
||||
val options = ActivityOptions.makeSceneTransitionAnimation(mainActivity, toolbarContainer, getString(R.string.transition_toolbar))
|
||||
val options = ActivityOptions.makeSceneTransitionAnimation(
|
||||
mainActivity,
|
||||
toolbarContainer,
|
||||
getString(R.string.transition_toolbar)
|
||||
)
|
||||
NavigationUtil.goToSearch(requireActivity(), true, options)
|
||||
}
|
||||
return super.onOptionsItemSelected(item)
|
||||
|
@ -195,25 +228,24 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba
|
|||
loadTimeImage(day)
|
||||
}
|
||||
|
||||
|
||||
private fun loadTimeImage(day: String) {
|
||||
bannerImage?.let {
|
||||
val request = Glide.with(requireContext())
|
||||
if (PreferenceUtil.getInstance(requireContext()).bannerImage.isEmpty()) {
|
||||
request.load(day)
|
||||
.diskCacheStrategy(DiskCacheStrategy.NONE)
|
||||
.skipMemoryCache(true)
|
||||
.placeholder(R.drawable.material_design_default)
|
||||
.error(R.drawable.material_design_default)
|
||||
.into(it)
|
||||
.diskCacheStrategy(DiskCacheStrategy.NONE)
|
||||
.skipMemoryCache(true)
|
||||
.placeholder(R.drawable.material_design_default)
|
||||
.error(R.drawable.material_design_default)
|
||||
.into(it)
|
||||
} else {
|
||||
request.load(File(PreferenceUtil.getInstance(requireContext()).bannerImage, USER_BANNER))
|
||||
.asBitmap()
|
||||
.diskCacheStrategy(DiskCacheStrategy.NONE)
|
||||
.skipMemoryCache(true)
|
||||
.placeholder(R.drawable.material_design_default)
|
||||
.error(R.drawable.material_design_default)
|
||||
.into(it)
|
||||
.asBitmap()
|
||||
.diskCacheStrategy(DiskCacheStrategy.NONE)
|
||||
.skipMemoryCache(true)
|
||||
.placeholder(R.drawable.material_design_default)
|
||||
.error(R.drawable.material_design_default)
|
||||
.into(it)
|
||||
}
|
||||
}
|
||||
loadImageFromStorage()
|
||||
|
|
|
@ -26,8 +26,18 @@ import androidx.preference.PreferenceManager
|
|||
import code.name.monkey.appthemehelper.common.prefs.supportv7.ATEPreferenceFragmentCompat
|
||||
import code.name.monkey.appthemehelper.util.ATHUtil
|
||||
import code.name.monkey.retromusic.R
|
||||
import code.name.monkey.retromusic.preferences.*
|
||||
import code.name.monkey.retromusic.preferences.AlbumCoverStylePreference
|
||||
import code.name.monkey.retromusic.preferences.AlbumCoverStylePreferenceDialog
|
||||
import code.name.monkey.retromusic.preferences.BlacklistPreference
|
||||
import code.name.monkey.retromusic.preferences.BlacklistPreferenceDialog
|
||||
import code.name.monkey.retromusic.preferences.LibraryPreference
|
||||
import code.name.monkey.retromusic.preferences.LibraryPreferenceDialog
|
||||
import code.name.monkey.retromusic.preferences.MaterialListPreference
|
||||
import code.name.monkey.retromusic.preferences.MaterialListPreferenceDialog
|
||||
import code.name.monkey.retromusic.preferences.NowPlayingScreenPreference
|
||||
import code.name.monkey.retromusic.preferences.NowPlayingScreenPreferenceDialog
|
||||
import code.name.monkey.retromusic.util.NavigationUtil
|
||||
import me.everything.android.ui.overscroll.OverScrollDecoratorHelper
|
||||
|
||||
/**
|
||||
* @author Hemanth S (h4h13).
|
||||
|
@ -54,9 +64,11 @@ abstract class AbsSettingsFragment : ATEPreferenceFragmentCompat() {
|
|||
|
||||
protected fun setSummary(preference: Preference?) {
|
||||
preference?.let {
|
||||
setSummary(it, PreferenceManager
|
||||
setSummary(
|
||||
it, PreferenceManager
|
||||
.getDefaultSharedPreferences(it.context)
|
||||
.getString(it.key, ""))
|
||||
.getString(it.key, "")
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -68,6 +80,7 @@ abstract class AbsSettingsFragment : ATEPreferenceFragmentCompat() {
|
|||
listView.setPadding(0, 0, 0, 0)
|
||||
listView.setPaddingRelative(0, 0, 0, 0)
|
||||
invalidateSettings()
|
||||
OverScrollDecoratorHelper.setUpOverScroll(listView, OverScrollDecoratorHelper.ORIENTATION_VERTICAL)
|
||||
}
|
||||
|
||||
override fun onCreatePreferenceDialog(preference: Preference): DialogFragment? {
|
||||
|
|
|
@ -28,12 +28,23 @@ import code.name.monkey.retromusic.activities.SettingsActivity
|
|||
import code.name.monkey.retromusic.extensions.hide
|
||||
import code.name.monkey.retromusic.extensions.show
|
||||
import code.name.monkey.retromusic.util.NavigationUtil
|
||||
import kotlinx.android.synthetic.main.fragment_main_settings.*
|
||||
|
||||
import kotlinx.android.synthetic.main.fragment_main_settings.aboutSettings
|
||||
import kotlinx.android.synthetic.main.fragment_main_settings.audioSettings
|
||||
import kotlinx.android.synthetic.main.fragment_main_settings.buyPremium
|
||||
import kotlinx.android.synthetic.main.fragment_main_settings.buyProContainer
|
||||
import kotlinx.android.synthetic.main.fragment_main_settings.container
|
||||
import kotlinx.android.synthetic.main.fragment_main_settings.diamondIcon
|
||||
import kotlinx.android.synthetic.main.fragment_main_settings.generalSettings
|
||||
import kotlinx.android.synthetic.main.fragment_main_settings.imageSettings
|
||||
import kotlinx.android.synthetic.main.fragment_main_settings.notificationSettings
|
||||
import kotlinx.android.synthetic.main.fragment_main_settings.nowPlayingSettings
|
||||
import kotlinx.android.synthetic.main.fragment_main_settings.otherSettings
|
||||
import kotlinx.android.synthetic.main.fragment_main_settings.personalizeSettings
|
||||
import me.everything.android.ui.overscroll.OverScrollDecoratorHelper
|
||||
|
||||
class MainSettingsFragment : Fragment(), View.OnClickListener {
|
||||
override fun onClick(v: View) {
|
||||
when (v.id) {
|
||||
override fun onClick(view: View) {
|
||||
when (view.id) {
|
||||
R.id.generalSettings -> inflateFragment(ThemeSettingsFragment(), R.string.general_settings_title)
|
||||
R.id.audioSettings -> inflateFragment(AudioSettings(), R.string.pref_header_audio)
|
||||
R.id.nowPlayingSettings -> inflateFragment(NowPlayingSettingsFragment(), R.string.now_playing)
|
||||
|
@ -45,8 +56,10 @@ class MainSettingsFragment : Fragment(), View.OnClickListener {
|
|||
}
|
||||
}
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?): View? {
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
return inflater.inflate(R.layout.fragment_main_settings, container, false)
|
||||
}
|
||||
|
||||
|
@ -75,7 +88,7 @@ class MainSettingsFragment : Fragment(), View.OnClickListener {
|
|||
buyPremium.setTextColor(it)
|
||||
diamondIcon.imageTintList = ColorStateList.valueOf(it)
|
||||
}
|
||||
|
||||
OverScrollDecoratorHelper.setUpOverScroll(container)
|
||||
}
|
||||
|
||||
private fun inflateFragment(fragment: Fragment, @StringRes title: Int) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue