From 29473800a630e459a2d5b3ae726091ccd94aeba3 Mon Sep 17 00:00:00 2001 From: Talha Hasan Zia Date: Wed, 21 Jun 2017 02:08:04 +0500 Subject: [PATCH 1/3] ViewPager method - Created a setUpWithViewPager() method similar to Android's TabLayout method. - This will couple Navigation Bar with a ViewPager you implemented in your app. - It is as simple as a call to setUpWithViewPager(). - See ViewPagerActivity for example usage. - Code is commented with JavaDoc formatting. --- app/build.gradle | 5 +- app/src/main/AndroidManifest.xml | 9 +- .../bottombar/sample/MainActivity.java | 4 + .../bottombar/sample/ViewPagerActivity.java | 92 +++++++++++++++++++ app/src/main/res/layout/activity_main.xml | 6 ++ .../main/res/layout/activity_view_pager.xml | 28 ++++++ .../com/roughike/bottombar/BottomBar.java | 92 ++++++++++++++----- build.gradle | 2 +- 8 files changed, 211 insertions(+), 27 deletions(-) create mode 100644 app/src/main/java/com/example/bottombar/sample/ViewPagerActivity.java create mode 100644 app/src/main/res/layout/activity_view_pager.xml diff --git a/app/build.gradle b/app/build.gradle index 434d4acd..9f1c76f0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -28,10 +28,11 @@ dependencies { compile "com.android.support:appcompat-v7:${rootProject.ext.supportLibraryVersion}" compile "com.android.support:design:${rootProject.ext.supportLibraryVersion}" + compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha8' androidTestCompile 'junit:junit:4.12' androidTestCompile 'com.android.support.test:runner:0.5' androidTestCompile 'com.android.support.test:rules:0.5' androidTestCompile 'org.mockito:mockito-core:1.10.19' - androidTestCompile "com.google.dexmaker:dexmaker:1.2" - androidTestCompile "com.google.dexmaker:dexmaker-mockito:1.2" + androidTestCompile 'com.google.dexmaker:dexmaker:1.2' + androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.2' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index fd181570..f6f4add6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -19,10 +19,15 @@ - - + + + \ No newline at end of file diff --git a/app/src/main/java/com/example/bottombar/sample/MainActivity.java b/app/src/main/java/com/example/bottombar/sample/MainActivity.java index 87a23cd2..b5b5e134 100644 --- a/app/src/main/java/com/example/bottombar/sample/MainActivity.java +++ b/app/src/main/java/com/example/bottombar/sample/MainActivity.java @@ -17,6 +17,7 @@ protected void onCreate(Bundle savedInstanceState) { findViewById(R.id.five_tabs_changing_colors).setOnClickListener(this); findViewById(R.id.three_tabs_quick_return).setOnClickListener(this); findViewById(R.id.five_tabs_custom_colors).setOnClickListener(this); + findViewById(R.id.viewpager_button).setOnClickListener(this); findViewById(R.id.badges).setOnClickListener(this); } @@ -40,6 +41,9 @@ public void onClick(View v) { case R.id.five_tabs_custom_colors: clazz = CustomColorAndFontActivity.class; break; + case R.id.viewpager_button: + clazz = ViewPagerActivity.class; + break; case R.id.badges: clazz = BadgeActivity.class; break; diff --git a/app/src/main/java/com/example/bottombar/sample/ViewPagerActivity.java b/app/src/main/java/com/example/bottombar/sample/ViewPagerActivity.java new file mode 100644 index 00000000..7fbeabcd --- /dev/null +++ b/app/src/main/java/com/example/bottombar/sample/ViewPagerActivity.java @@ -0,0 +1,92 @@ +package com.example.bottombar.sample; + +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentStatePagerAdapter; +import android.support.v4.view.ViewPager; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; + +import com.roughike.bottombar.BottomBar; + +/** + * The ViewPager example activity. + * This illustrates how simply you can hook up bottom bar with your viewpager by calling just one method + * Please note that you need a working viewpager adapter to achieve error free results. + */ +public class ViewPagerActivity extends AppCompatActivity { + + /** + * The View pager. + */ + ViewPager viewPager; + /** + * The Bottom bar. + */ + BottomBar bottomBar; + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_view_pager); + + + // initialize views by xml references + initViews(); + + // initiate viewpager + ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager()); + + + // set adapter to viewpager + viewPager.setAdapter(viewPagerAdapter); + + // just add viewpager to bottombar + bottomBar.setUpWithViewPager(viewPager); + + // Now viewpager and bottom bar will work together + + + } + + + private void initViews() { + + viewPager = (ViewPager) findViewById(R.id.viewpager_button); + bottomBar = (BottomBar) findViewById(R.id.bottomBar); + + } + + /** + * The View pager adapter to manage fragments. + */ + + public class ViewPagerAdapter extends FragmentStatePagerAdapter { + + + /** + * Instantiates a new View pager adapter. + * + * @param fm the SupportFragmentManager object + */ + public ViewPagerAdapter(FragmentManager fm) { + super(fm); + } + + + + @Override + public Fragment getItem(int position) { + + + return SampleFragment.newInstance("This is Fragment #" + (position + 1)); + } + + @Override + public int getCount() { + return 3; // working with 3 fragments for now + } + } + +} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index e90ec527..2c9d03ab 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -43,6 +43,12 @@ android:layout_height="wrap_content" android:text="Three tabs with Quick Return" /> +