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