
In many android apps we have seen sliding images with circle indicator. This kind of sliding image gallery can be develop using viewpager.
Live Demo
Fallow the below steps to develop sliding image gallery with circle indicator.
Step1
Create a blank android project using android studio. if you don’t know how to create a project in android, see my previous post.
Step2
Create three blank fragment for displaying image. you can create as many as you want.
fragment_image_one.xml
fragment_image_two.xml
fragment_image_three.xml
Step3
Create a footer.xml to place the circle indicator.
footer.xml
Step4
Create a fragment_main.xml to place the viewpager.
fragment_main.xml
Step5
footer.xml
Step4
Create a fragment_main.xml to place the viewpager.
fragment_main.xml
Step5
fragment_main.xml
Step5
Create an adapter class.
ImageViewPagerAdapter.java
package javaant.com.viewpager_circle_indicator; import android.app.Fragment; import android.app.FragmentManager; import android.content.Context; import android.support.v13.app.FragmentPagerAdapter; /** * Created by nirmal on 12/08/15. */ public class ImageViewPagerAdapter extends FragmentPagerAdapter { private Context _context; public static int totalPage = 3; public ImageViewPagerAdapter(Context context, FragmentManager fm) { super(fm); _context = context; } @Override public Fragment getItem(int position) { Fragment f = new Fragment(); switch (position) { case 0: f = new ImageOneFragment(); break; case 1: f = new ImageTwoFragment(); break; case 2: f = new ImageThreeFragment(); break; } return f; } @Override public int getCount() { return totalPage; } }
MainActivityFragment.java
package javaant.com.viewpager_circle_indicator; import android.app.Fragment; import android.os.Bundle; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.ImageView; /** * A placeholder fragment containing a simple view. */ public class MainActivityFragment extends Fragment { private ViewPager _mViewPager; private ImageViewPagerAdapter _adapter; private ImageView _btn1, _btn2, _btn3; public MainActivityFragment() { } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); setUpView(); setTab(); onCircleButtonClick(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_main, container, false); } private void onCircleButtonClick() { _btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { _btn1.setImageResource(R.drawable.fill_circle); _mViewPager.setCurrentItem(0); } }); _btn2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { _btn2.setImageResource(R.drawable.fill_circle); _mViewPager.setCurrentItem(1); } }); _btn3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { _btn3.setImageResource(R.drawable.fill_circle); _mViewPager.setCurrentItem(2); } }); } private void setUpView() { _mViewPager = (ViewPager) getView().findViewById(R.id.imageviewPager); _adapter = new ImageViewPagerAdapter(getActivity(), getFragmentManager()); _mViewPager.setAdapter(_adapter); _mViewPager.setCurrentItem(0); initButton(); } private void setTab() { _mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrollStateChanged(int position) { } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageSelected(int position) { // TODO Auto-generated method stub _btn1.setImageResource(R.drawable.holo_circle); _btn2.setImageResource(R.drawable.holo_circle); _btn3.setImageResource(R.drawable.holo_circle); btnAction(position); } }); } private void btnAction(int action) { switch (action) { case 0: _btn1.setImageResource(R.drawable.fill_circle); break; case 1: _btn2.setImageResource(R.drawable.fill_circle); break; case 2: _btn3.setImageResource(R.drawable.fill_circle); break; } } private void initButton() { _btn1 = (ImageView) getView().findViewById(R.id.btn1); _btn1.setImageResource(R.drawable.fill_circle); _btn2 = (ImageView) getView().findViewById(R.id.btn2); _btn3 = (ImageView) getView().findViewById(R.id.btn3); } private void setButton(Button btn, String text, int h, int w) { btn.setWidth(w); btn.setHeight(h); btn.setText(text); } }
The modification of the code is need because there are many errors is come…
Hi Aman Thanks for you suggestions. I have checked the code, it is working fine, Please download the code using download button and run the same.
you have not mentiond any commennts in your code. so i have many doubts in your code since I am new to android. however when I am using your code I am getting an error in ImageViewPagerAdapter class at the below given statements
switch (position) {
case 0:
f = new ImageOneFragment();
break;
case 1:
f = new ImageTwoFragment();
break;
case 2:
f = new ImageThreeFragment();
break;
}
return f;
the error is can nto resolve the symbol please resolve my issue.
Hi I am not able to understand from you code which variable is not declared . make sure that your ImageViewPagerAdapter class extend FragmentPagerAdapter. I will suggest you download the code using download button and run the examples and then implement in your project.
How can i set a timer for the images to slide