android ViewPager  实现点击小圆点切换页面

说明:在viewpager中,通过左右滑动可以切换页面,同样可以通过点击所指示的小圆点来滑动到某个页面页面。

具体实现方法如下:

主要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) {

//默认选中第一张图片

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) {

}

}

/** 指引页面改监听器 */

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>

运行效果:

demo下载:http://download.csdn.net/detail/lyhdream/5170654

(点击小图标切换不同页面)

android ViewPager 实现点击小圆点切换页面 案例相关推荐

  1. android小圆点滑动切换,android ViewPager 实现点击小圆点切换页面 案例

    android ViewPager  实现点击小圆点切换页面 说明:在viewpager中,通过左右滑动可以切换页面,同样可以通过点击所指示的小圆点来滑动到某个页面页面. 具体实现方法如下: 主要ac ...

  2. 轮播图切换圆点html,图片轮播器,点击小圆点按钮实现图片切换。别的都对。哪里错了呀!...

    按照阿安老师的<焦点图轮播特效>这部教程,5-1课.一步一步做的.检查了好几遍都没有错呀?为什么就是不执行呢?别的都好了,就是点击小圆点切换到相应的图片不行,代码见69-76行,哪里错了呢 ...

  3. js图片切换(点击左右按钮,小圆点切换图片,自动轮播)

    点击左右按钮,小圆点切换图片 <div><button><</button><button class="right">> ...

  4. 用javascript点击小圆点循环播放轮播图片

    点击小圆点循环播放图片 <style>*{padding: 0;margin: 0;}.place{position: relative;width: 800px;height: 600p ...

  5. JavaScript——网页轮播图( 实现点击小圆点、图片滑动、小圆点样式改变)

    一.轮播图要实现的效果: 实现点击小圆点.图片滑动.小圆点样式改变 二.轮播图实现效果步骤: 1.利用html+css完成轮播图片,底部小点的整体效果的布局. 2.通过原生js完成图片轮播,无缝自动切 ...

  6. js实现轮播图(点击小图片切换大图片+自动切换)

    js实现轮播图(点击小图片切换大图片+自动切换) 实现效果如下: 点击小图切换大图和轮播标题,点击左右按钮大小图和轮播标题切换,鼠标进入清除定时器,鼠标移出恢复轮播 html代码如下: <div ...

  7. 微信小程序实现点击导航条切换页面

    本文实例为大家分享了微信小程序实现点击导航条切换页面的具体代码,供大家参考,具体内容如下 我录制了个gif如下,黄色部分是不可以滑动的,蓝色部分可以滑动. 代码解说: 首先我在js自定义了navSta ...

  8. android优美列表页面,android listview 列表 点击列表进入详细页面

    [实例简介] android listview 列表 点击列表进入详细页面 [实例截图] [核心代码] ListviewSingleChoice └── ListviewSingleChoice ├─ ...

  9. swiper的介绍以及使用(移动端滑动屏幕切换页面案例)

    一.swiper介绍 Swiper常用于移动端网站的内容触摸滑动  Swiper是纯javascript打造的滑动特效插件,面向手机.平板电脑等移动终端.  Swiper能实现轮播图.触屏焦点图.触屏 ...

最新文章

  1. 安装和部署Exchange Server 2007
  2. Directx11 教程(2) 基本的windows应用程序框架(2)
  3. 08_传智播客iOS视频教程_Foundation框架
  4. 使用ffmpeg合并视频文件的三种方法
  5. javascript 高级特性探讨A4-A5(call和原型.对象复制)
  6. 前端笔试之手写代码(一)
  7. phpcms v9 打开网站特别慢 增加数据库缓存方法
  8. python canvas画移动物体_Python:Tkinter的GUI设计——物体实时移动
  9. 记录通用权限管理系统组件使用心得体会,写技术博客赢IPad2
  10. Fragment控件初始化
  11. css背景图片不显示原因,excel 背景图片(css设置背景图片不显示问题)
  12. 常用视频格式与视频编解码标准介绍
  13. python合并大量ts文件_python合并ts视频
  14. Python:运行时隐藏窗口
  15. 微信商户号进件接口,错误之 重新确认最终受益人字段
  16. UVA 3713 Astronauts
  17. 人类常见的十大思维谬误
  18. 秀米数字编号实用知识点
  19. 干货:图像比赛的通用套路有哪些?Kaggle比赛金牌团队为你解答
  20. 真无线蓝牙耳机性价比高?真无线蓝牙耳机性价比排行

热门文章

  1. 浅谈线程池(下):相关试验及注意事项
  2. TCP 的那些事儿(上)
  3. 深度译文:机器学习那些事
  4. 数据中心的“维稳之道”
  5. 大数据分析助精准医疗迅猛发展
  6. elasticsearch的增删改查
  7. MINA2-TCP服务端实例
  8. putty network error: connection refused
  9. [LeetCode]: 169: Majority Element
  10. ICMP报文的格式和种类