Skip to content

Commit

Permalink
Update sample to use fragments and viewpager with navigation bar.
Browse files Browse the repository at this point in the history
  • Loading branch information
gauravk95 committed Mar 1, 2019
1 parent aa29dee commit 6b28a75
Show file tree
Hide file tree
Showing 13 changed files with 470 additions and 198 deletions.
23 changes: 14 additions & 9 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,21 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.gauravk.bubblebarsample">
xmlns:tools="http://schemas.android.com/tools"
package="com.gauravk.bubblebarsample">

<application
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">
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">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER"/>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".BottomBarActivity" />
<activity android:name=".TopBarActivity" />
<activity android:name=".EqualBottomBarActivity" />
</application>

</manifest>
28 changes: 28 additions & 0 deletions app/src/main/java/com/gauravk/bubblebarsample/BottomBarActivity.kt
Original file line number Diff line number Diff line change
@@ -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<ScreenSlidePageFragment>()
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)
}
}


}
Original file line number Diff line number Diff line change
@@ -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<ScreenSlidePageFragment>()
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)
}
}


}
38 changes: 24 additions & 14 deletions app/src/main/java/com/gauravk/bubblebarsample/MainActivity.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.gauravk.bubblebarsample

import android.content.Intent
import android.support.v7.app.AppCompatActivity
import android.os.Bundle

Expand All @@ -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)
}
}
Original file line number Diff line number Diff line change
@@ -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)
}
}
}
}
Original file line number Diff line number Diff line change
@@ -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<ScreenSlidePageFragment>,
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()
}
}
26 changes: 26 additions & 0 deletions app/src/main/java/com/gauravk/bubblebarsample/TopBarActivity.kt
Original file line number Diff line number Diff line change
@@ -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<ScreenSlidePageFragment>()
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)
}
}


}
82 changes: 82 additions & 0 deletions app/src/main/res/layout/activity_bottom_bar.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".BottomBarActivity">

<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@id/bottom_navigation_view_linear"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<com.gauravk.bubblenavigation.BubbleNavigationLinearView
android:id="@+id/bottom_navigation_view_linear"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:elevation="8dp"
android:orientation="horizontal"
android:padding="12dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">

<com.gauravk.bubblenavigation.BubbleToggleView
android:id="@+id/l_item_home"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:bt_active="true"
app:bt_colorActive="@color/red_active"
app:bt_colorInactive="@color/red_inactive"
app:bt_icon="@drawable/ic_home"
app:bt_shape="@drawable/transition_background_drawable_home"
app:bt_title="@string/home" />

<com.gauravk.bubblenavigation.BubbleToggleView
android:id="@+id/l_item_search"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:bt_colorActive="@color/blue_active"
app:bt_colorInactive="@color/blue_inactive"
app:bt_icon="@drawable/ic_search"
app:bt_shape="@drawable/transition_background_drawable_search"
app:bt_title="@string/search" />

<com.gauravk.bubblenavigation.BubbleToggleView
android:id="@+id/l_item_profile_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:bt_colorActive="@color/blue_grey_active"
app:bt_colorInactive="@color/blue_grey_inactive"
app:bt_icon="@drawable/ic_like"
app:bt_shape="@drawable/transition_background_drawable_like"
app:bt_title="@string/likes" />

<com.gauravk.bubblenavigation.BubbleToggleView
android:id="@+id/l_item_notification"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:bt_colorActive="@color/green_active"
app:bt_colorInactive="@color/green_inactive"
app:bt_icon="@drawable/ic_playlist"
app:bt_shape="@drawable/transition_background_drawable_list"
app:bt_title="@string/notification" />

<com.gauravk.bubblenavigation.BubbleToggleView
android:id="@+id/l_item_profile"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:bt_colorActive="@color/purple_active"
app:bt_colorInactive="@color/purple_inactive"
app:bt_icon="@drawable/ic_person"
app:bt_shape="@drawable/transition_background_drawable_person"
app:bt_title="@string/profile" />
</com.gauravk.bubblenavigation.BubbleNavigationLinearView>

</android.support.constraint.ConstraintLayout>
Loading

0 comments on commit 6b28a75

Please sign in to comment.