Add ViewPager for HomeActivity and BottomNav

feature/top10
Aurelien Hubert 7 years ago
parent e036f2dc89
commit 6de5f26733
  1. 30
      app/src/main/java/net/pokeranalytics/android/ui/activity/HomeActivity.kt
  2. 64
      app/src/main/java/net/pokeranalytics/android/ui/adapter/HomePagerAdapter.kt
  3. 33
      app/src/main/java/net/pokeranalytics/android/ui/view/PokerAnalyticsViewPager.kt
  4. 10
      app/src/main/res/layout/activity_home.xml

@ -3,14 +3,11 @@ package net.pokeranalytics.android.ui.activity
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import androidx.fragment.app.Fragment
import com.google.android.material.bottomnavigation.BottomNavigationView import com.google.android.material.bottomnavigation.BottomNavigationView
import kotlinx.android.synthetic.main.activity_home.* import kotlinx.android.synthetic.main.activity_home.*
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity
import net.pokeranalytics.android.ui.fragment.HistoryFragment import net.pokeranalytics.android.ui.adapter.HomePagerAdapter
import net.pokeranalytics.android.ui.fragment.SettingsFragment
import net.pokeranalytics.android.ui.fragment.StatsFragment
@ -44,7 +41,7 @@ class HomeActivity : PokerAnalyticsActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(net.pokeranalytics.android.R.layout.activity_home) setContentView(R.layout.activity_home)
initUI() initUI()
} }
@ -55,6 +52,12 @@ class HomeActivity : PokerAnalyticsActivity() {
private fun initUI() { private fun initUI() {
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener) navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener)
navigation.selectedItemId = net.pokeranalytics.android.R.id.navigation_history navigation.selectedItemId = net.pokeranalytics.android.R.id.navigation_history
val homePagerAdapter = HomePagerAdapter(supportFragmentManager)
viewPager.offscreenPageLimit = 5
viewPager.enablePaging = false
viewPager.adapter = homePagerAdapter
} }
/** /**
@ -69,22 +72,7 @@ class HomeActivity : PokerAnalyticsActivity() {
else -> "" else -> ""
} }
val fragment: Fragment = when(index) { viewPager.setCurrentItem(index, false)
0 -> HistoryFragment()
1 -> StatsFragment()
else -> SettingsFragment()
}
val fragmentManager = supportFragmentManager
val count = fragmentManager.backStackEntryCount
for (i in 0 until count) {
fragmentManager.popBackStack()
}
val fragmentTransaction = fragmentManager.beginTransaction()
fragmentTransaction.replace(net.pokeranalytics.android.R.id.container, fragment)
fragmentTransaction.commit()
} }

@ -0,0 +1,64 @@
package net.pokeranalytics.android.ui.adapter
import android.util.SparseArray
import android.view.ViewGroup
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentStatePagerAdapter
import net.pokeranalytics.android.ui.fragment.HistoryFragment
import net.pokeranalytics.android.ui.fragment.SettingsFragment
import net.pokeranalytics.android.ui.fragment.StatsFragment
import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment
import java.lang.ref.WeakReference
/**
* Home Adapter
*/
class HomePagerAdapter(fragmentManager: FragmentManager) : FragmentStatePagerAdapter(fragmentManager) {
var weakReferences = SparseArray<WeakReference<PokerAnalyticsFragment>>()
override fun getItem(position: Int): PokerAnalyticsFragment {
return when (position) {
0 -> HistoryFragment.newInstance()
1 -> StatsFragment.newInstance()
2 -> SettingsFragment.newInstance()
else -> HistoryFragment.newInstance()
}
}
override fun getCount(): Int {
return 5
}
override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
super.destroyItem(container, position, `object`)
weakReferences.remove(position)
}
override fun instantiateItem(container: ViewGroup, position: Int): Any {
val fragment = super.instantiateItem(container, position) as PokerAnalyticsFragment
weakReferences.put(position, WeakReference(fragment))
return fragment
}
override fun getItemPosition(obj: Any): Int {
val fragment = obj as PokerAnalyticsFragment
return when (fragment) {
HistoryFragment::class.java -> 0
StatsFragment::class.java -> 1
SettingsFragment::class.java -> 2
else -> -1
}
}
/**
* Return the fragment at the position key
*/
fun getFragment(key: Int): PokerAnalyticsFragment? {
if (weakReferences.get(key) != null) {
return weakReferences.get(key).get()
}
return null
}
}

@ -0,0 +1,33 @@
package net.pokeranalytics.android.ui.view
import android.content.Context
import android.util.AttributeSet
import android.view.MotionEvent
import androidx.viewpager.widget.ViewPager
/**
* Poker Analytics ViewPager
*/
class PokerAnalyticsViewPager(context: Context, attrs: AttributeSet) : ViewPager(context, attrs) {
var enablePaging: Boolean = false
init {
this.enablePaging = false
}
override fun onTouchEvent(event: MotionEvent): Boolean {
return if (this.enablePaging) {
super.onTouchEvent(event)
} else false
}
override fun onInterceptTouchEvent(event: MotionEvent): Boolean {
return if (this.enablePaging) {
super.onInterceptTouchEvent(event)
} else false
}
}

@ -15,6 +15,7 @@
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:title="@string/app_name" /> app:title="@string/app_name" />
<!--
<FrameLayout <FrameLayout
android:id="@+id/container" android:id="@+id/container"
android:layout_width="0dp" android:layout_width="0dp"
@ -22,6 +23,15 @@
app:layout_constraintBottom_toTopOf="@+id/navigation" app:layout_constraintBottom_toTopOf="@+id/navigation"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/toolbar" /> -->
<net.pokeranalytics.android.ui.view.PokerAnalyticsViewPager
android:id="@+id/viewPager"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@+id/navigation"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/toolbar" /> app:layout_constraintTop_toBottomOf="@+id/toolbar" />
<com.google.android.material.bottomnavigation.BottomNavigationView <com.google.android.material.bottomnavigation.BottomNavigationView

Loading…
Cancel
Save