chore: optimized feed activity
This commit is contained in:
parent
46c17dced1
commit
b256f02f14
5 changed files with 44 additions and 48 deletions
|
@ -11,17 +11,20 @@ import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.FragmentManager
|
import androidx.fragment.app.FragmentManager
|
||||||
import androidx.lifecycle.Lifecycle
|
import androidx.lifecycle.Lifecycle
|
||||||
import androidx.viewpager2.adapter.FragmentStateAdapter
|
import androidx.viewpager2.adapter.FragmentStateAdapter
|
||||||
|
import androidx.viewpager2.widget.ViewPager2
|
||||||
import ani.dantotsu.R
|
import ani.dantotsu.R
|
||||||
import ani.dantotsu.databinding.ActivityFeedBinding
|
import ani.dantotsu.databinding.ActivityFeedBinding
|
||||||
|
import ani.dantotsu.databinding.ActivityNotificationBinding
|
||||||
import ani.dantotsu.initActivity
|
import ani.dantotsu.initActivity
|
||||||
import ani.dantotsu.navBarHeight
|
import ani.dantotsu.navBarHeight
|
||||||
import ani.dantotsu.statusBarHeight
|
import ani.dantotsu.statusBarHeight
|
||||||
import ani.dantotsu.themes.ThemeManager
|
import ani.dantotsu.themes.ThemeManager
|
||||||
import ani.dantotsu.profile.activity.ActivityFragment.Companion.ActivityType
|
import ani.dantotsu.profile.activity.ActivityFragment.Companion.ActivityType
|
||||||
|
import ani.dantotsu.profile.notification.NotificationActivity
|
||||||
import nl.joery.animatedbottombar.AnimatedBottomBar
|
import nl.joery.animatedbottombar.AnimatedBottomBar
|
||||||
|
|
||||||
class FeedActivity : AppCompatActivity() {
|
class FeedActivity : AppCompatActivity() {
|
||||||
private lateinit var binding: ActivityFeedBinding
|
private lateinit var binding: ActivityNotificationBinding
|
||||||
private var selected: Int = 0
|
private var selected: Int = 0
|
||||||
lateinit var navBar: AnimatedBottomBar
|
lateinit var navBar: AnimatedBottomBar
|
||||||
|
|
||||||
|
@ -29,29 +32,27 @@ class FeedActivity : AppCompatActivity() {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
ThemeManager(this).applyTheme()
|
ThemeManager(this).applyTheme()
|
||||||
initActivity(this)
|
initActivity(this)
|
||||||
binding = ActivityFeedBinding.inflate(layoutInflater)
|
binding = ActivityNotificationBinding.inflate(layoutInflater)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
navBar = binding.feedNavBar
|
binding.notificationTitle.text = getString(R.string.activities)
|
||||||
val navBarMargin = if (resources.configuration.orientation ==
|
binding.notificationToolbar.updateLayoutParams<ViewGroup.MarginLayoutParams> {
|
||||||
Configuration.ORIENTATION_LANDSCAPE
|
topMargin = statusBarHeight
|
||||||
) 0 else navBarHeight
|
|
||||||
navBar.updateLayoutParams<ViewGroup.MarginLayoutParams> { bottomMargin = navBarMargin }
|
|
||||||
val personalTab = navBar.createTab(R.drawable.ic_round_person_24, "Following")
|
|
||||||
val globalTab = navBar.createTab(R.drawable.ic_globe_24, "Global")
|
|
||||||
navBar.addTab(personalTab)
|
|
||||||
navBar.addTab(globalTab)
|
|
||||||
binding.listTitle.text = getString(R.string.activities)
|
|
||||||
binding.feedViewPager.updateLayoutParams<ViewGroup.MarginLayoutParams> {
|
|
||||||
bottomMargin = navBarMargin
|
|
||||||
topMargin += statusBarHeight
|
|
||||||
}
|
}
|
||||||
binding.listToolbar.updateLayoutParams<ViewGroup.MarginLayoutParams> { topMargin += statusBarHeight }
|
navBar = binding.notificationNavBar
|
||||||
val activityId = intent.getIntExtra("activityId", -1)
|
binding.root.updateLayoutParams<ViewGroup.MarginLayoutParams> {
|
||||||
if (activityId != -1) { navBar.visibility = View.GONE }
|
bottomMargin = navBarHeight
|
||||||
binding.feedViewPager.adapter =
|
}
|
||||||
ViewPagerAdapter(supportFragmentManager, lifecycle, activityId)
|
val tabs = listOf(
|
||||||
binding.feedViewPager.setCurrentItem(selected, false)
|
Pair(R.drawable.ic_round_person_24, "Following"),
|
||||||
binding.feedViewPager.isUserInputEnabled = false
|
Pair(R.drawable.ic_globe_24, "Global"),
|
||||||
|
)
|
||||||
|
tabs.forEach { (icon, title) -> navBar.addTab(navBar.createTab(icon, title)) }
|
||||||
|
binding.notificationBack.setOnClickListener { onBackPressedDispatcher.onBackPressed() }
|
||||||
|
val getOne = intent.getIntExtra("activityId", -1)
|
||||||
|
if (getOne != -1) { navBar.visibility = View.GONE }
|
||||||
|
binding.notificationViewPager.adapter = ViewPagerAdapter(supportFragmentManager, lifecycle, getOne)
|
||||||
|
binding.notificationViewPager.setOffscreenPageLimit(4)
|
||||||
|
binding.notificationViewPager.setCurrentItem(selected, false)
|
||||||
navBar.selectTabAt(selected)
|
navBar.selectTabAt(selected)
|
||||||
navBar.setOnTabSelectListener(object : AnimatedBottomBar.OnTabSelectListener {
|
navBar.setOnTabSelectListener(object : AnimatedBottomBar.OnTabSelectListener {
|
||||||
override fun onTabSelected(
|
override fun onTabSelected(
|
||||||
|
@ -61,24 +62,15 @@ class FeedActivity : AppCompatActivity() {
|
||||||
newTab: AnimatedBottomBar.Tab
|
newTab: AnimatedBottomBar.Tab
|
||||||
) {
|
) {
|
||||||
selected = newIndex
|
selected = newIndex
|
||||||
binding.feedViewPager.setCurrentItem(selected, true)
|
binding.notificationViewPager.setCurrentItem(selected, true)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
binding.notificationViewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
|
||||||
|
override fun onPageSelected(position: Int) {
|
||||||
|
super.onPageSelected(position)
|
||||||
|
navBar.selectTabAt(position)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
binding.listBack.setOnClickListener {
|
|
||||||
onBackPressedDispatcher.onBackPressed()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onConfigurationChanged(newConfig: Configuration) {
|
|
||||||
super.onConfigurationChanged(newConfig)
|
|
||||||
val margin =
|
|
||||||
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) 0 else navBarHeight
|
|
||||||
val params: ViewGroup.MarginLayoutParams =
|
|
||||||
binding.feedViewPager.layoutParams as ViewGroup.MarginLayoutParams
|
|
||||||
val paramsNav: ViewGroup.MarginLayoutParams =
|
|
||||||
navBar.layoutParams as ViewGroup.MarginLayoutParams
|
|
||||||
params.updateMargins(bottom = margin)
|
|
||||||
paramsNav.updateMargins(bottom = margin)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
|
|
|
@ -51,7 +51,6 @@ class NotificationActivity : AppCompatActivity() {
|
||||||
binding.notificationViewPager.adapter = ViewPagerAdapter(supportFragmentManager, lifecycle, getOne)
|
binding.notificationViewPager.adapter = ViewPagerAdapter(supportFragmentManager, lifecycle, getOne)
|
||||||
binding.notificationViewPager.setOffscreenPageLimit(4)
|
binding.notificationViewPager.setOffscreenPageLimit(4)
|
||||||
binding.notificationViewPager.setCurrentItem(selected, false)
|
binding.notificationViewPager.setCurrentItem(selected, false)
|
||||||
binding.notificationViewPager
|
|
||||||
navBar.selectTabAt(selected)
|
navBar.selectTabAt(selected)
|
||||||
navBar.setOnTabSelectListener(object : AnimatedBottomBar.OnTabSelectListener {
|
navBar.setOnTabSelectListener(object : AnimatedBottomBar.OnTabSelectListener {
|
||||||
override fun onTabSelected(
|
override fun onTabSelected(
|
||||||
|
|
|
@ -53,6 +53,7 @@ class NotificationFragment(
|
||||||
binding.notificationRecyclerView.setBaseline(navbar)
|
binding.notificationRecyclerView.setBaseline(navbar)
|
||||||
binding.notificationRecyclerView.adapter = adapter
|
binding.notificationRecyclerView.adapter = adapter
|
||||||
binding.notificationRecyclerView.layoutManager = LinearLayoutManager(context)
|
binding.notificationRecyclerView.layoutManager = LinearLayoutManager(context)
|
||||||
|
binding.notificationProgressBar.isVisible = true
|
||||||
binding.notificationRefresh.updateLayoutParams<ViewGroup.MarginLayoutParams> {
|
binding.notificationRefresh.updateLayoutParams<ViewGroup.MarginLayoutParams> {
|
||||||
bottomMargin = navBarHeight
|
bottomMargin = navBarHeight
|
||||||
}
|
}
|
||||||
|
@ -78,6 +79,7 @@ class NotificationFragment(
|
||||||
super.onScrolled(recyclerView, dx, dy)
|
super.onScrolled(recyclerView, dx, dy)
|
||||||
if (shouldLoadMore()) {
|
if (shouldLoadMore()) {
|
||||||
lifecycleScope.launch {
|
lifecycleScope.launch {
|
||||||
|
binding.notificationRefresh.isVisible = true
|
||||||
getList()
|
getList()
|
||||||
binding.notificationRefresh.isVisible = false
|
binding.notificationRefresh.isVisible = false
|
||||||
}
|
}
|
||||||
|
@ -94,7 +96,6 @@ class NotificationFragment(
|
||||||
NotificationType.USER -> getNotificationsFiltered { it.media == null }
|
NotificationType.USER -> getNotificationsFiltered { it.media == null }
|
||||||
NotificationType.SUBSCRIPTION -> getSubscriptions()
|
NotificationType.SUBSCRIPTION -> getSubscriptions()
|
||||||
NotificationType.COMMENT -> getComments()
|
NotificationType.COMMENT -> getComments()
|
||||||
else -> listOf()
|
|
||||||
}
|
}
|
||||||
adapter.addAll(list.map { NotificationItem(it, ::onClick) })
|
adapter.addAll(list.map { NotificationItem(it, ::onClick) })
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,19 +4,25 @@
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<ProgressBar
|
<LinearLayout
|
||||||
android:id="@+id/listProgressBar"
|
android:id="@+id/listProgressBar"
|
||||||
style="?android:attr/progressBarStyle"
|
android:layout_width="match_parent"
|
||||||
android:layout_width="wrap_content"
|
android:layout_height="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:gravity="center"
|
||||||
android:layout_gravity="center"
|
tools:visibility="gone">
|
||||||
android:visibility="gone" />
|
|
||||||
|
<ProgressBar
|
||||||
|
style="?android:attr/progressBarStyle"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:gravity="center_horizontal"
|
android:gravity="center_horizontal"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/emptyTextView"
|
android:id="@+id/emptyTextView"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -45,7 +51,6 @@
|
||||||
|
|
||||||
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
||||||
|
|
||||||
|
|
||||||
<ProgressBar
|
<ProgressBar
|
||||||
android:id="@+id/feedRefresh"
|
android:id="@+id/feedRefresh"
|
||||||
style="?android:attr/progressBarStyle"
|
style="?android:attr/progressBarStyle"
|
||||||
|
|
|
@ -19,7 +19,6 @@
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/listFrameLayout"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:gravity="center_horizontal"
|
android:gravity="center_horizontal"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue