android ViewPager 实现点击小圆点切换页面 案例
android ViewPager ?實(shí)現(xiàn)點(diǎn)擊小圓點(diǎn)切換頁面
說明:在viewpager中,通過左右滑動可以切換頁面,同樣可以通過點(diǎn)擊所指示的小圓點(diǎn)來滑動到某個頁面頁面。
具體實(shí)現(xiàn)方法如下:
主要activity:
<?xmlversion="1.0"encoding="utf-8"?>
<FrameLayoutxmlns:android="http://schemas.android.com/apk/res/android"
? ? android:layout_width="fill_parent"
? ? android:layout_height="fill_parent"
? ? android:orientation="vertical">
? ? <android.support.v4.view.ViewPager
? ? ? ? android:id="@+id/guidePages"
? ? ? ? android:layout_width="fill_parent"
? ? ? ? android:layout_height="wrap_content"/>
? ? ? ?
? ? <RelativeLayout ?
? ? ? ? android:layout_width="fill_parent" ?
? ? ? ? android:layout_height="wrap_content" ?
? ? ? ? android:orientation="vertical">
? ? <LinearLayout ?
? ? ? ? android:id="@+id/viewGroup" ?
? ? ? ? android:layout_width="fill_parent" ?
? ? ? ? android:layout_height="wrap_content" ?
? ? ? ? android:layout_alignParentBottom="true" ?
? ? ? ? android:layout_marginBottom="30dp" ?
? ? ? ? android:gravity="center_horizontal" ?
? ? ? ? android:orientation="horizontal"> ?
? ? </LinearLayout> ?
? ? </RelativeLayout>
</FrameLayout>
主Class:
public class MainActivity extends Activity {
? ? private ViewPagerviewPager; ?
? ? private ArrayList<View>pageViews; ?
? ? private ViewGroupmain, group; ?
? ? private ImageViewimageView; ?
? ? private ImageView[]imageViews;?
? ? public int a = 0;
? ? public int i = 0;
? ? /** Called when the activity is first created. */
? ? @Override
? ? public void onCreate(Bundle savedInstanceState) {
? ? ? ? super.onCreate(savedInstanceState);
? ? ? ? this.requestWindowFeature(Window.FEATURE_NO_TITLE);
?? ? ? ?
? ? ? ? LayoutInflater inflater = getLayoutInflater(); ?
? ? ? ? pageViews =new ArrayList<View>(); ?
? ? ? ? pageViews.add(inflater.inflate(R.layout.item01,null)); ?
? ? ? ? pageViews.add(inflater.inflate(R.layout.item02,null)); ?
? ? ? ? pageViews.add(inflater.inflate(R.layout.item03,null)); ?
? ? ? ? pageViews.add(inflater.inflate(R.layout.item04,null));? ?
??
? ? ? ? imageViews =new ImageView[pageViews.size()]; ?
? ? ? ? main = (ViewGroup)inflater.inflate(R.layout.activity_main,null); ?
?? ? ? ?
?? ? ? ?
? ? ? ? group = (ViewGroup)main.findViewById(R.id.viewGroup);
??
? ? ? ? viewPager = (ViewPager)main.findViewById(R.id.guidePages); ?
??
? ? ? ? for (i = 0;i < pageViews.size(); i++) { ?
? ? ? ? ? ? imageView =new ImageView(MainActivity.this); ?
? ? ? ? ? ? imageView.setLayoutParams(new LayoutParams(40,40)); ?
? ? ? ? ? ? imageView.setPadding(20, 0, 20, 0); ?
? ? ? ? ? ? imageViews[i] =imageView; ?
?? ? ? ? ? ?
?? ? ? ? ? ?
? ? ? ? ? ? if (i == 0) { ?
? ? ? ? ? ? ? ? //默認(rèn)選中第一張圖片
? ? ? ? ? ? ? ? imageViews[i].setBackgroundResource(R.drawable.head_portrait); ?
?? ? ? ? ? ? ? ?
? ? ? ? ? ? } else { ?
? ? ? ? ? ? ? ? imageViews[i].setBackgroundResource(R.drawable.ic_launcher); ?
? ? ? ? ? ? } ?
? ? ? ? ? ? imageViews[i].setOnClickListener(new OnClickListener() {
@Override
publicvoid onClick(View v) {
intk = i;
viewPager.setCurrentItem(where(imageViews,(ImageView)v));
Log.d("-------","-------------" + i);
}
});
? ? ? ? ? ? group.addView(imageViews[i]); ?
? ? ? ? } ?
??
? ? ? ? setContentView(main); ?
??
? ? ? ? viewPager.setAdapter(new GuidePageAdapter()); ?
? ? ? ? viewPager.setOnPageChangeListener(new GuidePageChangeListener()); ?
? ? }
?? ?
?? ?
? ? public int where(ImageView[] imageviews,ImageView imageview){
? ? for(int i = 0;i < imageviews.length;i++){
? ? if(imageviews[i] == imageview){
? ? return i;
? ? }
? ? }
? ? return -1; ? ?
? ? }
?? ?
? ? /** 指引頁面Adapter */
? ? class GuidePageAdapterextends PagerAdapter { ?
?? ? ?
? ? ? ? @Override ?
? ? ? ? publicint getCount() { ?
? ? ? ? ? ? returnpageViews.size(); ?
? ? ? ? } ?
??
? ? ? ? @Override ?
? ? ? ? publicboolean isViewFromObject(View arg0, Object arg1) { ?
? ? ? ? ? ? return arg0 == arg1; ?
? ? ? ? } ?
??
? ? ? ? @Override ?
? ? ? ? publicint getItemPosition(Object object) { ?
? ? ? ? ? ? //TODO Auto-generated method stub ?
? ? ? ? ? ? returnsuper.getItemPosition(object); ?
? ? ? ? } ?
??
? ? ? ? @Override ?
? ? ? ? publicvoid destroyItem(View arg0, int arg1, Object arg2) { ?
? ? ? ? ? ? //TODO Auto-generated method stub ?
? ? ? ? ? ? ((ViewPager) arg0).removeView(pageViews.get(arg1)); ?
? ? ? ? } ?
??
? ? ? ? @Override ?
? ? ? ? public Object instantiateItem(View arg0,int arg1) { ?
? ? ? ? ? ? //TODO Auto-generated method stub ?
? ? ? ? ? ? ((ViewPager) arg0).addView(pageViews.get(arg1)); ?
? ? ? ? ? ? returnpageViews.get(arg1) ;
? ? ? ? } ?
??
? ? ? ? @Override ?
? ? ? ? publicvoid restoreState(Parcelable arg0, ClassLoader arg1) { ?
? ? ? ? ? ? //TODO Auto-generated method stub ?
??
? ? ? ? } ?
??
? ? ? ? @Override ?
? ? ? ? public Parcelable saveState() { ?
? ? ? ? ? ? returnnull; ?
? ? ? ? } ?
??
? ? ? ? @Override ?
? ? ? ? publicvoid startUpdate(View arg0) { ?
??
? ? ? ? } ?
??
? ? ? ? @Override ?
? ? ? ? publicvoid finishUpdate(View arg0) { ?
??
? ? ? ? } ?
? ? }?
?? ?
? ? /** 指引頁面改監(jiān)聽器 */
? ? class GuidePageChangeListenerimplements OnPageChangeListener { ?
??
? ? ? ? @Override ?
? ? ? ? publicvoid onPageScrollStateChanged(int arg0) { ?
? ? ? ? ? ? //TODO Auto-generated method stub ?
??
? ? ? ? } ?
??
? ? ? ? @Override ?
? ? ? ? publicvoid onPageScrolled(int arg0, float arg1, int arg2) { ?
? ? ? ? ? ? //TODO Auto-generated method stub ?
??
? ? ? ? } ?
??
? ? ? ? @Override ?
? ? ? ? publicvoid onPageSelected(int arg0) { ?
? ? ? ? ? ? for (int i = 0; i <imageViews.length; i++) { ?
? ? ? ? ? ? ? ? imageViews[arg0] ?
? ? ? ? ? ? ? ? ? ? ? ? .setBackgroundResource(R.drawable.head_portrait); ?
? ? ? ? ? ? ? ? if (arg0 != i) { ?
? ? ? ? ? ? ? ? ? ? imageViews[i] ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? .setBackgroundResource(R.drawable.ic_launcher); ?
? ? ? ? ? ? ? ? } ?
? ? ? ? ? ? }
??
? ? ? ? } ?
??
? ? } ?
}
四個頁面文件:
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
? ? android:layout_width="fill_parent"
? ? android:layout_height="fill_parent"
? ? android:orientation="vertical">
?? ?
? ? <ImageView ?
? ? ? ? android:layout_width="fill_parent" ?
? ? ? ? android:layout_height="fill_parent" ?
? ? ? ? android:background="#f00"> ?
? ? </ImageView>
?? ?
</LinearLayout>
運(yùn)行效果:
demo下載:http://download.csdn.net/detail/lyhdream/5170654
(點(diǎn)擊小圖標(biāo)切換不同頁面)
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀
總結(jié)
以上是生活随笔為你收集整理的android ViewPager 实现点击小圆点切换页面 案例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ViewPager 实现页面左右滑动的简
- 下一篇: android 点击字体,图片背景效果