上午没事写了一篇,下午有事,晚上回来看看感觉写的差点意思,上篇文章大概的关于循环是自己添加了两个空的View,看到网上还有一种就是在自定义的Adapter中getCount中返回最大值,然后destroyItem不删除View,添加异常,说了这么多,我实验之后总是有问题,如果有弄成功的可以告知我一下,我的是三张图片~还是按照上午的那种方式就是第一个和最后一个是空View:

基础布局

看下效果吧,加了一排小圈圈,比上午的那个Demo好看:

activity_pager.xml:

<FrameLayout xmlns: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/viewPager_pic"
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_pic"
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>

  实现Demo

自定义一个MyPicViewPagerAdapter:

		private class MyPicViewPagerAdapter extends PagerAdapter {

		@Override
public int getCount() {
// TODO Auto-generated method stub
return viewList.size();
} @Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == arg1;
} @Override
public void destroyItem(ViewGroup container, int position, Object object) {
// TODO Auto-generated method stub
container.removeView(viewList.get(position));
} @Override
public Object instantiateItem(ViewGroup container, int position) {
// TODO Auto-generated method stub
container.addView(viewList.get(position), 0);
return viewList.get(position); } }

 activity中的字段:

	private ViewPager viewPager;
private int[] srcArr = new int[] { R.drawable.eagle, R.drawable.heron,
R.drawable.flamingo };
private ViewGroup viewGroup;
private List<View> viewList;
private ImageView[] cycleList;

 activity中的onCreate中实例化的ViewPager和ViewGroup,实例化的时候加入参数

		viewPager = (ViewPager) findViewById(R.id.viewPager_pic);
viewGroup = (ViewGroup) findViewById(R.id.viewGroup_pic);
viewList = new ArrayList<View>();
viewList.add(new View(this));
for (int i = 0; i < srcArr.length; i++) {
ImageView imageView = new ImageView(this);
imageView.setBackgroundResource(srcArr[i]);
viewList.add(imageView);
}
viewList.add(new View(this));
// 加载小圆圈
cycleList = new ImageView[srcArr.length];
for (int i = 0; i < cycleList.length; i++) {
ImageView imageView = new ImageView(this);
imageView.setLayoutParams(new LayoutParams(10, 10));
cycleList[i] = imageView;
              //0的时候选中
if (i ==0) {
cycleList[i].setBackgroundResource(R.drawable.page_indicator_selected);
} else {
cycleList[i].setBackgroundResource(R.drawable.page_indicator_unselected);
} LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
new ViewGroup.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
layoutParams.leftMargin = 5;
layoutParams.rightMargin = 5;
viewGroup.addView(imageView, layoutParams);
}
viewPager.setAdapter(new MyPicViewPagerAdapter());
viewPager.setCurrentItem(1);

  Demo重要的是循环,由于是有五个View,三个小圈圈,所以就需要改变一下选中的setOnPageChangeListener:

viewPager.setOnPageChangeListener(new OnPageChangeListener() {

			@Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
for (int i = 0; i < cycleList.length; i++) {
cycleList[i].setBackgroundResource(R.drawable.page_indicator_unselected);
if (i == arg0-1) {
cycleList[i].setBackgroundResource(R.drawable.page_indicator_selected);
}
}
if(arg0 == 0)
viewPager.setCurrentItem(viewList.size()-2);
else if(arg0 == viewList.size() - 1)
viewPager.setCurrentItem(1);
} @Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub } @Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub }
});

  最后看下效果图:

Android循环ViewPager(二)的更多相关文章

  1. Android 使用ViewPager实现左右循环滑动图片

    ViewPager这个小demo实现的是可以左右循环滑动图片,下面带索引,滑到最后一页在往右滑动就要第一页,第一页往左滑动就到最后一页,先上效果图,用美女图片是我一贯的作风,呵呵 1.    首先看一 ...

  2. Android特效专辑(二)——ViewPager渲染背景颜色渐变(引导页)

    Android特效专辑(二)--ViewPager渲染背景颜色渐变(引导页) 首页:http://blog.csdn.net/qq_26787115/article/details/50439020 ...

  3. Android实现ViewPager无限循环滚动回绕

     Android实现ViewPager无限循环滚动回绕 Android系统提供的ViewPager标准方式是左右可以自由滑动,但是滑动到最左边的极限位置是第一个page,滑动到最右边的位置是最后一 ...

  4. Android Fragment使用(二) 嵌套Fragments (Nested Fragments) 的使用及常见错误

    嵌套Fragment的使用及常见错误 嵌套Fragments (Nested Fragments), 是在Fragment内部又添加Fragment. 使用时, 主要要依靠宿主Fragment的 ge ...

  5. Android中viewPager的一两点使用

    Android中viewPager的一两点使用 viewPager是谷歌官方提供的一种方便实现页面滑动效果的控件,可以直接使用也可以和fragment联合使用.这里只简单说下直接使用. 使用viewP ...

  6. 【转】android 电池(二):android关机充电流程、充电画面显示

    关键词:android 电池关机充电 androidboot.mode charger关机充电 充电画面显示 平台信息:内核:linux2.6/linux3.0系统:android/android4. ...

  7. 【转】Android循环滚动广告条的完美实现,封装方便,平滑过渡,从网络加载图片,点击广告进入对应网址

    Android循环滚动广告条的完美实现,封装方便,平滑过渡,从网络加载图片,点击广告进入对应网址 关注finddreams,一起分享,一起进步: http://blog.csdn.net/finddr ...

  8. Android仿微信二维码扫描

    转载:http://blog.csdn.net/xiaanming/article/details/10163203 了解二维码这个东西还是从微信中,当时微信推出二维码扫描功能,自己感觉挺新颖的,从一 ...

  9. Android反编译(二)之反编译XML资源文件

    Android反编译(二) 之反编译XML资源文件 [目录] 1.工具 2.反编译步骤 3.重新编译APK 4.实例 5.装X技巧 6.学习总结 1.工具 1).反编译工具  apktool http ...

随机推荐

  1. printf的定义

    1. printf的宏定义 #define XXX_ERROR 0#define XXX_WARNING 1#define XXX_INFO 2#define XXX_DEBUG 3#define X ...

  2. SQL_异化

    select a.pk_accasoa from bd_accasoa a; --下级科目原来主键: 0001Z0100000000001A2 --执行该语句后下级科目异化了(替换的意思) , '@@ ...

  3. 1008 Elevator (20)(20 point(s))

    problem The highest building in our city has only one elevator. A request list is made up with N pos ...

  4. Openstack_通用模块_Oslo_vmware 创建 vCenter 虚拟机快照

    创建虚拟机快照 vSphere Create Snapshot 文档 Snapshot 是虚拟机磁盘文件(VMDK)在某个点及时的复本.包含了虚拟机所有虚拟磁盘上的数据状态和这个虚拟机的电源状态(on ...

  5. [ 原创 ]新手作品-我的第一款安卓自学作品---YY音乐诞生了

    YY音乐---我前前后后断断续续花了3个月时间,边从0基础开始学Android 和Java,边开始做自己的Android第一款软件,之间看了许多教学视频,许多博客,才算Android入了一点点门道,终 ...

  6. Window 下安装

    Window 下安装 下载地址:https://github.com/MSOpenTech/redis/releases Redis 支持 32 位和 64 位.这个需要根据你系统平台的实际情况选择, ...

  7. MySql_delete同时删除多表相关联记录

    sql delete同时删除多表相关联记录 sqlserver 支持级联更新和删除oracle 只支持级联删除 删除包含主键值的行的操作,该值由其它表的现有行中的外键列引用.在级联删除中,还删除其外键 ...

  8. Git_版本回退

    现在,你已经学会了修改文件,然后把修改提交到Git版本库,现在,再练习一次,修改readme.txt文件如下: Git is a distributed version control system. ...

  9. SQL Plus和PL/SQL

    一.SQL Plus是oracle提供的一种用户接口.类似于操作系统的命令行.用户可以通过在SQL Plus中输入命令来向数据库发            送命令,数据库也将处理结果通过SQL Plus ...

  10. http://qurtyy.blog.163.com/blog/static/5744368120130221419244/

    我们先来看它的思路:把控制不透明度和控向上移动的动画分别存储在两个队列中,控制向上移动的队列按默认情况进行(在2000毫秒内完成),而不透明度的控制在1000毫秒内执行,但这个队列要晚于默认队列100 ...