From 6b28a7538618ceb0d8fe79d3d77b0723c01f328e Mon Sep 17 00:00:00 2001
From: gaurav <19gauravk95@gmail.com>
Date: Fri, 1 Mar 2019 20:59:02 +0530
Subject: [PATCH] Update sample to use fragments and viewpager with navigation
bar.
---
app/src/main/AndroidManifest.xml | 23 +-
.../bubblebarsample/BottomBarActivity.kt | 28 +++
.../bubblebarsample/EqualBottomBarActivity.kt | 26 +++
.../gauravk/bubblebarsample/MainActivity.kt | 38 ++--
.../ScreenSlidePageFragment.kt | 58 +++++
.../ScreenSlidePagerAdapter.kt | 23 ++
.../gauravk/bubblebarsample/TopBarActivity.kt | 26 +++
.../main/res/layout/activity_bottom_bar.xml | 82 +++++++
.../res/layout/activity_equal_bottom_bar.xml | 72 ++++++
app/src/main/res/layout/activity_main.xml | 208 +++---------------
app/src/main/res/layout/activity_top_bar.xml | 65 ++++++
.../res/layout/fragment_screen_slide_page.xml | 17 ++
app/src/main/res/values/strings.xml | 2 -
13 files changed, 470 insertions(+), 198 deletions(-)
create mode 100644 app/src/main/java/com/gauravk/bubblebarsample/BottomBarActivity.kt
create mode 100644 app/src/main/java/com/gauravk/bubblebarsample/EqualBottomBarActivity.kt
create mode 100644 app/src/main/java/com/gauravk/bubblebarsample/ScreenSlidePageFragment.kt
create mode 100644 app/src/main/java/com/gauravk/bubblebarsample/ScreenSlidePagerAdapter.kt
create mode 100644 app/src/main/java/com/gauravk/bubblebarsample/TopBarActivity.kt
create mode 100644 app/src/main/res/layout/activity_bottom_bar.xml
create mode 100644 app/src/main/res/layout/activity_equal_bottom_bar.xml
create mode 100644 app/src/main/res/layout/activity_top_bar.xml
create mode 100644 app/src/main/res/layout/fragment_screen_slide_page.xml
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 73549a1..48d48ab 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,21 +1,26 @@
+ xmlns:tools="http://schemas.android.com/tools"
+ package="com.gauravk.bubblebarsample">
+ android:allowBackup="true"
+ android:icon="@mipmap/ic_launcher"
+ android:label="@string/app_name"
+ android:roundIcon="@mipmap/ic_launcher_round"
+ android:supportsRtl="true"
+ android:theme="@style/AppTheme"
+ tools:ignore="GoogleAppIndexingWarning">
-
+
-
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/gauravk/bubblebarsample/BottomBarActivity.kt b/app/src/main/java/com/gauravk/bubblebarsample/BottomBarActivity.kt
new file mode 100644
index 0000000..69ca047
--- /dev/null
+++ b/app/src/main/java/com/gauravk/bubblebarsample/BottomBarActivity.kt
@@ -0,0 +1,28 @@
+package com.gauravk.bubblebarsample
+
+import android.support.v7.app.AppCompatActivity
+import android.os.Bundle
+import kotlinx.android.synthetic.main.activity_bottom_bar.*
+
+class BottomBarActivity : AppCompatActivity() {
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_bottom_bar)
+
+ val fragList = ArrayList()
+ fragList.add(ScreenSlidePageFragment.newInstance(getString(R.string.home)))
+ fragList.add(ScreenSlidePageFragment.newInstance(getString(R.string.search)))
+ fragList.add(ScreenSlidePageFragment.newInstance(getString(R.string.likes)))
+ fragList.add(ScreenSlidePageFragment.newInstance(getString(R.string.notification)))
+ fragList.add(ScreenSlidePageFragment.newInstance(getString(R.string.profile)))
+ val pagerAdapter = ScreenSlidePagerAdapter(fragList, supportFragmentManager)
+ view_pager.adapter = pagerAdapter
+
+ bottom_navigation_view_linear.setNavigationChangeListener { _, position ->
+ view_pager.setCurrentItem(position, true)
+ }
+ }
+
+
+}
diff --git a/app/src/main/java/com/gauravk/bubblebarsample/EqualBottomBarActivity.kt b/app/src/main/java/com/gauravk/bubblebarsample/EqualBottomBarActivity.kt
new file mode 100644
index 0000000..44d09af
--- /dev/null
+++ b/app/src/main/java/com/gauravk/bubblebarsample/EqualBottomBarActivity.kt
@@ -0,0 +1,26 @@
+package com.gauravk.bubblebarsample
+
+import android.support.v7.app.AppCompatActivity
+import android.os.Bundle
+import kotlinx.android.synthetic.main.activity_equal_bottom_bar.*
+
+class EqualBottomBarActivity : AppCompatActivity() {
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_equal_bottom_bar)
+
+ val fragList = ArrayList()
+ fragList.add(ScreenSlidePageFragment.newInstance(getString(R.string.shop)))
+ fragList.add(ScreenSlidePageFragment.newInstance(getString(R.string.photos)))
+ fragList.add(ScreenSlidePageFragment.newInstance(getString(R.string.call)))
+ val pagerAdapter = ScreenSlidePagerAdapter(fragList, supportFragmentManager)
+ view_pager.adapter = pagerAdapter
+
+ equal_navigation_bar.setNavigationChangeListener { _, position ->
+ view_pager.setCurrentItem(position, true)
+ }
+ }
+
+
+}
diff --git a/app/src/main/java/com/gauravk/bubblebarsample/MainActivity.kt b/app/src/main/java/com/gauravk/bubblebarsample/MainActivity.kt
index 8c9c10a..16f69f0 100644
--- a/app/src/main/java/com/gauravk/bubblebarsample/MainActivity.kt
+++ b/app/src/main/java/com/gauravk/bubblebarsample/MainActivity.kt
@@ -1,5 +1,6 @@
package com.gauravk.bubblebarsample
+import android.content.Intent
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
@@ -11,22 +12,31 @@ class MainActivity : AppCompatActivity() {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
- //listeners for top navigation view
- top_navigation_constraint_text.text = String.format(
- getString(R.string.position_placeholder_top),
- top_navigation_constraint.currentActiveItemPosition
- )
- top_navigation_constraint.setNavigationChangeListener { _, position ->
- top_navigation_constraint_text.text = String.format(getString(R.string.position_placeholder_top), position)
+ open_top_navigation_bar.setOnClickListener {
+ launchTopBarActivity()
}
- //listener for bottom navigation view
- bottom_navigation_linear.text = String.format(
- getString(R.string.position_placeholder_bottom),
- bottom_navigation_view_linear.currentActiveItemPosition
- )
- bottom_navigation_view_linear.setNavigationChangeListener { _, position ->
- bottom_navigation_linear.text = String.format(getString(R.string.position_placeholder_bottom), position)
+ open_bottom_equal_navigation_bar.setOnClickListener {
+ launchEqualBarActivity()
}
+
+ open_bottom_navigation_bar.setOnClickListener {
+ launchBottomBarActivity()
+ }
+ }
+
+ private fun launchBottomBarActivity() {
+ val intent = Intent(this, BottomBarActivity::class.java)
+ startActivity(intent)
+ }
+
+ private fun launchTopBarActivity() {
+ val intent = Intent(this, TopBarActivity::class.java)
+ startActivity(intent)
+ }
+
+ private fun launchEqualBarActivity() {
+ val intent = Intent(this, EqualBottomBarActivity::class.java)
+ startActivity(intent)
}
}
diff --git a/app/src/main/java/com/gauravk/bubblebarsample/ScreenSlidePageFragment.kt b/app/src/main/java/com/gauravk/bubblebarsample/ScreenSlidePageFragment.kt
new file mode 100644
index 0000000..ddea92e
--- /dev/null
+++ b/app/src/main/java/com/gauravk/bubblebarsample/ScreenSlidePageFragment.kt
@@ -0,0 +1,58 @@
+package com.gauravk.bubblebarsample
+
+import android.os.Bundle
+import android.support.v4.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+
+import kotlinx.android.synthetic.main.fragment_screen_slide_page.*
+
+private const val ARG_TITLE = "arg_title"
+
+/**
+ * A simple [Fragment] subclass.
+ * Use the [ScreenSlidePageFragment.newInstance] factory method to
+ * create an instance of this fragment.
+ *
+ */
+class ScreenSlidePageFragment : Fragment() {
+ private var title: String? = "Default title."
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ arguments?.let {
+ title = it.getString(ARG_TITLE)
+ }
+ }
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ // Inflate the layout for this fragment
+ return inflater.inflate(R.layout.fragment_screen_slide_page, container, false)
+ }
+
+ override fun onActivityCreated(savedInstanceState: Bundle?) {
+ super.onActivityCreated(savedInstanceState)
+ screen_slide_title.text = title
+ }
+
+ companion object {
+ /**
+ * Use this factory method to create a new instance of
+ * this fragment using the provided parameters.
+ *
+ * @param title Title parameter
+ * @return A new instance of fragment ScreenSlidePageFragment.
+ */
+ @JvmStatic
+ fun newInstance(title: String) =
+ ScreenSlidePageFragment().apply {
+ arguments = Bundle().apply {
+ putString(ARG_TITLE, title)
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/com/gauravk/bubblebarsample/ScreenSlidePagerAdapter.kt b/app/src/main/java/com/gauravk/bubblebarsample/ScreenSlidePagerAdapter.kt
new file mode 100644
index 0000000..c6e7e02
--- /dev/null
+++ b/app/src/main/java/com/gauravk/bubblebarsample/ScreenSlidePagerAdapter.kt
@@ -0,0 +1,23 @@
+package com.gauravk.bubblebarsample
+
+import android.support.v4.app.Fragment
+import android.support.v4.app.FragmentManager
+import android.support.v4.app.FragmentStatePagerAdapter
+
+/**
+ * A simple pager adapter that represents 5 ScreenSlidePageFragment objects, in
+ * sequence.
+ */
+class ScreenSlidePagerAdapter(
+ private val fragmentList: ArrayList,
+ fm: FragmentManager
+) : FragmentStatePagerAdapter(fm) {
+
+ override fun getCount(): Int = fragmentList.size
+
+ override fun getItem(position: Int): Fragment {
+ if (position >= 0 && position < fragmentList.size)
+ return fragmentList[position]
+ return ScreenSlidePageFragment()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/gauravk/bubblebarsample/TopBarActivity.kt b/app/src/main/java/com/gauravk/bubblebarsample/TopBarActivity.kt
new file mode 100644
index 0000000..325ccfe
--- /dev/null
+++ b/app/src/main/java/com/gauravk/bubblebarsample/TopBarActivity.kt
@@ -0,0 +1,26 @@
+package com.gauravk.bubblebarsample
+
+import android.support.v7.app.AppCompatActivity
+import android.os.Bundle
+import kotlinx.android.synthetic.main.activity_top_bar.*
+
+class TopBarActivity : AppCompatActivity() {
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_top_bar)
+
+ val fragList = ArrayList()
+ fragList.add(ScreenSlidePageFragment.newInstance(getString(R.string.restaurant)))
+ fragList.add(ScreenSlidePageFragment.newInstance(getString(R.string.room)))
+ fragList.add(ScreenSlidePageFragment.newInstance(getString(R.string.happy)))
+ val pagerAdapter = ScreenSlidePagerAdapter(fragList, supportFragmentManager)
+ view_pager.adapter = pagerAdapter
+
+ top_navigation_constraint.setNavigationChangeListener { _, position ->
+ view_pager.setCurrentItem(position, true)
+ }
+ }
+
+
+}
diff --git a/app/src/main/res/layout/activity_bottom_bar.xml b/app/src/main/res/layout/activity_bottom_bar.xml
new file mode 100644
index 0000000..7526e93
--- /dev/null
+++ b/app/src/main/res/layout/activity_bottom_bar.xml
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_equal_bottom_bar.xml b/app/src/main/res/layout/activity_equal_bottom_bar.xml
new file mode 100644
index 0000000..36afa20
--- /dev/null
+++ b/app/src/main/res/layout/activity_equal_bottom_bar.xml
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 3dae49a..208b981 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -6,193 +6,55 @@
android:layout_height="match_parent"
tools:context=".MainActivity">
-
-
-
+ app:layout_constraintTop_toTopOf="parent" />
-
-
-
-
-
-
+ app:layout_constraintTop_toBottomOf="@+id/open_top_navigation_bar" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/open_bottom_equal_navigation_bar" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_top_bar.xml b/app/src/main/res/layout/activity_top_bar.xml
new file mode 100644
index 0000000..5687d74
--- /dev/null
+++ b/app/src/main/res/layout/activity_top_bar.xml
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_screen_slide_page.xml b/app/src/main/res/layout/fragment_screen_slide_page.xml
new file mode 100644
index 0000000..bfc3517
--- /dev/null
+++ b/app/src/main/res/layout/fragment_screen_slide_page.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 4576fe8..efba7a9 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -5,8 +5,6 @@
Profile
Notify
Favs
- Top position is %d
- Bottom position is %d
Happy
Room
Food